Локализация клиента 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 Edition с SIDом – XE. Создать еще одну базу данных, либо пересоздать существующую у вас не получиться. Вообще, говоря откровенно, понятие базы данных тут отсутствует. В официальной документации говориться, что теперь нужно создавать нового пользователя, который и является контейнером всех необходимых таблиц, процедур и т.д. (ну это то понятно).Объектные привилегии остались, что позволит осуществлять доступ различным пользователям к объектам друг друга.
  • Ограничение на объем базы данных — 4 Гб.
  • Объем оперативной памяти не более 1 Гб.
  • На момент написания данной статьи можно загрузить две различные редакции Oracle Database 10g 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 и на одном из них с сервера приходят сообщения об ошибках на русском языке, данная настройка полностью сносит им голову и получаются некие кракозябры из-за перекодировки, хотя данные отображаются нормально.

    Tags: ,

    • Digg
    • Del.icio.us
    • StumbleUpon
    • Reddit
    • Twitter
    • RSS

    Один комментарий to “Локализация клиента Oracle XE на Windows 2008”

    1. Михаил:

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


    Оставьте сообщение

    Дорогие друзья, в связи с лавиной спама нам пришлось поставить фильтры. Если вы хотите, чтобы ваши комментарии появились, оставляйте сообщения, что называется "в тему". Если из сообщения непонятно, относится ли оно к записи или странице (например содержит что-то типа "тут все классно, респект автору"), то оно не будет опубликовано.

    Укажите 3 цифры