Как изменить набор символов в Oracle 11g r2 Express edition - PullRequest
9 голосов
/ 02 февраля 2012

Мне нужно изменить набор символов с AL32UTF8 на WE8MSWIN1252 в экземпляре Oracle 11g r2 Express ... Я попытался использовать команду:

ALTER DATABASE CHARACTER SET WE8MSWIN1252;

Но не удается сказать, что MSWIN1252 не являетсярасширенный набор AL32UTF8.Затем я нашел несколько статей, рассказывающих о CSSCAN, и этот инструмент, похоже, недоступен в Oracle 11 Express.

http://www.oracle -base.com / Articles / 10g / CharacterSetMigration.php

У кого-нибудь есть идеи, как это сделать?Заранее спасибо

Редактировать Уточнение немного: реальная проблема заключается в том, что я пытаюсь импортировать данные в таблицу, столбец которой определен как VARCHAR (6 байт).Строка, вызывающая проблему, - «eq.mês», ей нужно 6 байтов в MSWIN1252 и 7 байтов в UT8

Ответы [ 3 ]

5 голосов
/ 02 февраля 2012

Вы не можете.

Экспресс-версия 11g доступна только с использованием набора символов UTF-8.Если вы хотите вернуться к экспресс-выпуску 10g, была западноевропейская версия, которая использовала набор символов Windows-1252.В отличие от других выпусков, Oracle не поддерживает полный набор наборов символов в Express Edition и не поддерживает изменение набора символов в существующей базе данных XE.

Почему вы считаете, что вам нужно изменитьнабор символов базы данных?Помимо того, что потенциально требуется чуть больше места для хранения для поддержки символов в верхней половине диапазона Windows-1252, которые, как правило, используются не особо интенсивно, у базы данных UTF-8 не так много недостатков.

1 голос
/ 03 июля 2015

Проблема только выполнения этой команды ALTER DATABASE состоит в том, что словарь данных не был преобразован и может быть поврежден.

У меня была такая же проблема.В моем случае мы используем Oracle 11g Express Edition (11.2.0.2.0), и нам действительно нужно, чтобы он работал на наборе символов WE8MSWIN1252, но я не могу изменить набор символов при установке (он всегда устанавливается с AL32UTF8).

Если клиент Oracle 11g установлен как администратор и выполняется только csscan full=y (проверьте эту ссылку https://oracle -base.com / Articles / 10g / набор символов-миграции ), и мы заметим,это проблемы с потерями и конвертируемыми данными в нашей базе данных.Но проблемы связаны со схемами MDSYS (Oracle Spatial) и APEX_040000 (Oracle Application Express).Поэтому, поскольку нам не нужны эти продукты, мы удаляем их (проверьте эту ссылку: http://fast -dba.blogspot.com.br / 2014/04 / how-to-remove-unwanted-components-from.html ).

Затем мы экспортируем с expdp пользовательские схемы и удаляем пользователей (они должны быть воссозданы в конце процесса).

Повторное выполнение csscan с помощью full=y capture=y сообщает, что: The data dictionary can be safely migrated using the CSALTER script.Если в отчете этого нет, сценарий csalter.plb не будет работать, поскольку некоторые условия не будут выполнены:

  • без изменений для всех данных CHAR VARCHAR2 и LONG (словарь данных и приложениеДанные)
  • без изменений для всех данных приложения CLOB
  • без изменений и / или с возможностью преобразования для всех словаря данных CLOB

В нашем случае эти условия были выполнены, и мы моглиуспешно запустил скрипт CSALTER.Кроме того, этот скрипт выполняет команду ALTER DATABASE, которую вы пытаетесь запустить, и преобразует данные CLOB преобразованного словаря данных.

Наконец, мы создаем пользователей и табличные пространства нашего приложения и импортируем дамппользовательских данных успешно.

1 голос
/ 02 февраля 2012

Я бы сказал, что ваш лучший вариант, когда вы хотите перейти к набору символов, который поддерживает только подмножество исходных символов, что ваш лучший вариант - использовать exp и imp обратно (или expdp и impdp).

Вы уверены, что ни одна таблица не будет содержать символов, не найденных в кодовой странице 1252?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...