Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

ну, первый набор символов - это 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.