Локализация клиента Oracle XE на Windows 2008
Пишу для себя, чтобы всегда под рукой было. Поставили мы себе Oracle XE для внутренних нужд, пока для разработки и тестов. Практически сразу обнаружились проблемы с кодировками, о них я, возможно, напишу в другой статье. Главное, что с базой можно было работать через PL/SQL Developer и какое-то время все шло нормально, пока я не переставил систему на своем компьютере, дали мне наши ИТ-шники Windows 2008 Server, который мне очень понравился за свою скорость и удобство. При попытке подключиться к базе XE из девелопера я получил вот такой ответ:
ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified
После раскопок интернета стало ясно, что это проблема связана с неким багом в Oracle XE или может это фича, как думают разработчики этого продукта, вот что было откопано на металинке для этого случая через третьи руки:
Another problem caused by lack of "CIS" territory in XE is the inability of OCI clients (e.g. SQL*Plus) older than 10.1 to connect to XE with NLS_LANG set to either _RUSSIA or _CIS. _RUSSIA does not work because it is not valid NLS_LANG setting on the client side and _CIS does not work because this is not a valid territory setting on the server side.
Для того, чтобы понять, что такое XE надо посмотреть на отличия этого продукта от аналогичных. Что это за база, я пишу не от себя, а взял вот отсюда, но пишу в расчете на долгосрочную перспективу и ссылка может потом умереть. Я коснусь только ограничений и недостатков:
Oracle Database 10g Express (Western European) Edition – поддержка кодировки LATIN1 западно-европейского языка. Весь интерфейс только на английском языке.
Oracle Database 10g Express Edition (Universal) – поддержка кодировки Unicode и как следствие, поддержка всех языков. Интерфейс может быть на следующих языках: Бразильский португальский, Китайский (Простой и Традиционный), Английский, Французский, Немецкий, Итальянский, Японский, Корейский и Испанский.
В приведенной мной ссылке рассказывается о том, как победить ошибку, которую я получил при попытке соединения из девелопера, достичь успеха способами, описанными там, мне не удалось. Чтобы все было хорошо, нами было проделано следующее.
1. Быда создана база с поддержкой Unicode. После создания эксплуатировать ее сразу начинать не надо.
2. В базе не надо делать никаких незадокументированных изменений, которые описаны в приведенной мной выше статье.
3. Необходимо произвести настройки на клиенте, главной особенностью здесь является то, что надо использовать вот такую настройку для языка:
NLS_LANG = RUSSIAN_RUSSIA.UTF8
Проблемой для Windows 2008 Server оказалось, что я не нашел этого ключа в реестре на прежнем месте (Windows у меня был уже 64-битный). Традиционный ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE оказался пуст. Все нашлось в папке с ключом HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE.
Для корректной работы с Oracle XE необходимо в OracleHome (он может по разному называться на Вашей машине) установить ключ в NLS_LANG приведенное выше значение. Все работает хорошо, но не пытайтесь использовать на клиенте русские сообщения об ошибках. У нас несколько обычных серверов баз данных Oracle и на одном из них с сервера приходят сообщения об ошибках на русском языке, данная настройка полностью сносит им голову и получаются некие кракозябры из-за перекодировки, хотя данные отображаются нормально.
Один комментарий to “Локализация клиента Oracle XE на Windows 2008”
Оставьте сообщение
Дорогие друзья, в связи с лавиной спама нам пришлось поставить фильтры. Если вы хотите, чтобы ваши комментарии появились, оставляйте сообщения, что называется "в тему". Если из сообщения непонятно, относится ли оно к записи или странице (например содержит что-то типа "тут все классно, респект автору"), то оно не будет опубликовано.









Коля, какой же ты разносторонний человек:
Коты, канализация, Оракл…