Настройка системы для сортировки с учётом национального алфавита |
СУБД Oracle сортирует строки в бинарном порядке, т.е. по коду символов, а не по алфавитному порядку. В частности для русского языка буква "Ё" всегда следует перед любой другой буквой. Символы белорусского и украинского алфавитов, отсутствующие в русском алфавите так же в кодовой таблице всегда следуют перед обычными символами.
Алфавитная сортировка реализована для русского, белорусского и украинского языков.
Поскольку алфавитная сортировка требует бо'льших ресурсов Oracle, её установка может существенно уменьшить производительность работы системы.
Чтобы установить алфавитную сортировку в БД системы
необходимо:- использовать при работе СУБД Oracle версии не младше 9i;
- иметь экземпляр базы данных СУБД в кодировке CL8MSWIN1251;
- создать БД с алфавитной сортировкой инсталлятором ora9inst.exe или модифицировать существующую БД с помощью утилиты проверки БД chkora9.exe.
- в поле Выберите кодировку создаваемой базы данных инсталлятора БД (см. п. Установка базы данных) при установке базы данных выбрать требуемое значение языка ввода.
Установка БД с алфавитной сортировкой.
При инсталляции БД необходимо:
- в поле Выберите кодировку создаваемой базы данных инсталлятора БД (см. п. Установка базы данных) при установке базы данных выбрать требуемое значение языка ввода
- установить соответствующий флаг в окне =Конфигурация создаваемой базы данных= (см. п. Установка базы данных).
Модификация существующей БД с помощью утилиты проверки БД.
Для установки алфавитной сортировки необходимо:
1) Внешними средствами выполнить запрос:
update <db>.x$files set xf$flags=xf$flags+16 where xf$code=0; commit;
2) Затем запустить проверку всех таблиц БД в режиме исправления путем запуска утилиты проверки БД, задав в cfg-файле утилиты параметры ChkBase.StoredProcs=on и ChkBase.Indexes=on.
Остальные параметры секции [ChkBase] должны иметь значение Off.
Если при установке БД не выбирался язык ввода, то перед началом работы с системой в файле atlantis.cfg (при необходимости создать) нужно задать параметр:
Atlantis.NLS.Page = "bel"; // или "ukr";
Для восстановления обычного порядка сортировки (бинарного) необходимо:
1) Внешними средствами выполнить запрос
update <db>.x$files set xf$flags=bitand(xf$flags,65519) where xf$code=0; commit;
2) Затем запустить проверку таблиц БД в режиме исправления, задав в cfg-файле
утилиты параметр ChkBase.Indexes=on. Остальные параметры секции [ChkBase] должны иметь значение Off.
Порядок работы с утилитой проверки БД рассмотрен в документе "Средство разработки Атлантис. Инструменты и утилиты", издание 04.2007 и выше.
Пример cfg-файла утилиты проверки БД chkora9.exe:
[ChkBase] Out=.\ StoredProcs=on UsersAndRights=off Compile=off Memo=off Journal=off Fields=off Indexes=on Triggers=off //Tables= [DataBase] DatabaseName=gal // имя схемы БД DataBaseDriver=ORA90DRV.DLL [Login] UserName=supervisor [SQLDriver] SQLServer=A12 // alias экземпляра БД Oracle [DictVersion] Version=52 Sum=-1601339646