Как в oracle поменять nls lang
Доброго всем времени. Вопрос, думаю, несложный будет для Вас. Открываю PL/SQL Developer БД запросом и в текстовых полях отображаются кракозябры? Как победить? Лезть в настройки БД через Oracle Configuration Assistant или же в девелопере настройка?
2,342 1 1 золотой знак 14 14 серебряных знаков 35 35 бронзовых знаков 517 2 2 золотых знака 7 7 серебряных знаков 20 20 бронзовых знаковОшибка в вашей настройке языка. Клиент Oracle берет настройку языка из виндовой переменной NLS_LANG, если я правильно помню, ее нужно установить в значение RUSSIAN_AMERICA.CL8MSWIN1251.
Сделать в Винде это можно в "Свойствах системы", закладка "Дополнительно", кнопка "Переменные среды". Добавляете этот параметр, если он не создался клиентом Oracle и задаете значение.
4,021 12 12 серебряных знаков 19 19 бронзовых знаков Спасибо большое, поменял, помогло!) Только небольшая поправочка - это меняется в ключе реестра, а где именно можно узнать из Developer-a: "Help - > Support Info -> Registry" Я точно правил через переменные среды, про реестр тоже слышал. Возможно, разные версии клиента воспринимают разные способы для установки значения. Коллеги, порядок применения настроек следующий. Если значение NLS_LANG изменено в реестре, то сначала используется оно, но если создана переменная окружения, то она сильнее, и имеет приоритет. Так можно запускать разные приложения bat-файлами с разными настройками, делая set nls_lang=. Ну а после того как клиентсое приложение уже запустилось, оно может само выдать ALTER SESSION и менять nls_language и nls_territory сколько угодно раз. То же касается и большинства других NLS-настроек, и не только.Русский текст (кирилица) в клиенте Oracle (PL/SQL Developer и др.)
Установить параметр реестра (выполнить -> regedit.exe):
Код для reg файла:
Путь и содержимое ветки реестра вашего oracle клиента, можно узнать из PL/SQL Developer-a:
Переменная окружения действительно помогает, но ее значение должно быть несколько иным.
Сначала нужно включить проверку соответствия кодировки клиента и сервера. Это делается так: Tools -> Preferences -> Options -> Check for client & server character set mismatch
После этого при подключении вы увидите предупреждение вида "NS_LANG is not defined. ", что означает, что переменная не определена или же там будет указано, что переменная определена, но ее значение не соответствует правильному. Вот это правильное и нужно вписать, чтобы заработало.
Установил Oracle Database Express Edition, но не могу найти где поменять настройку параметра NLS_LANG?
Ну а просто сказать - export NLS_LANG=..<то, что нужно>. не пробовал?
Пытаюсь сделать connect к удаленной БД в SQL*Plus, а она выдает
SQL> connect system/[email protected]/fis8_1p
ERROR:
ORA-00604: ЮиШСЪР ЭР аХЪгабШТЭЮЬ SQL-гаЮТЭХ 1
ORA-12705: ГЪРЧРЭЮ ЭХТХаЭЮХ ШЫШ ЭХШЧТХбвЭЮХ
ЧЭРзХЭШХ ЯРаРЬХваР NLS
> NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 . LANG=ru_RU.UTF-8
параметр LANG=ru_RU.UTF-8 не игоает роли, я его устанавливал как en_US.UTF-8. Это ничего не дало.
Если я стартую SQL*Plus через терминал (командную строку) то соединение проходит нормально.
Если стармую из меню выбором пункта меню "Run SQL Command Line" то получаю
SQL*Plus: Release 10.2.0.1.0 - Production on Пт Май 4 10:09:58 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn system/[email protected]/fis8_1p
ERROR:
ORA-00604: ЮиШСЪР ЭР аХЪгабШТЭЮЬ SQL-гаЮТЭХ 1
ORA-12705: ГЪРЧРЭЮ ЭХТХаЭЮХ ШЫШ ЭХШЧТХбвЭЮХ
ЧЭРзХЭШХ ЯРаРЬХваР NLS
]$ echo $LANG
ru_RU.UTF-8
[SOZ@localhost
]$ echo $NLS_LANG
RUSSIAN_CIS.UTF8
[SOZ@localhost
SQL*Plus: Release 10.2.0.1.0 - Production on Пт Май 4 15:45:30 2007
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn system/oracle@fis8_1p
ERROR:
ORA-00604: ЮиШСЪР ЭР аХЪгабШТЭЮЬ SQL-гаЮТЭХ 1
ORA-12705: ГЪРЧРЭЮ ЭХТХаЭЮХ ШЫШ ЭХШЧТХбвЭЮХ
ЧЭРзХЭШХ ЯРаРЬХваР NLS
Аосмотрел какой файл запускается из меню и запустил его из терминала
]$ sh /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/config/scripts/runsqlplus.sh
[SOZ@localhost
Результат тот-же т.е.
SQL*Plus: Release 10.2.0.1.0 - Production on Пт Май 4 15:28:07 2007
Copyright © 1982, 2005, Oracle. All rights reserved.
SQL> conn system/oracle@fis8_1p
ERROR:
ORA-00604: ЮиШСЪР ЭР аХЪгабШТЭЮЬ SQL-гаЮТЭХ 1
ORA-12705: ГЪРЧРЭЮ ЭХТХаЭЮХ ШЫШ ЭХШЧТХбвЭЮХ
ЧЭРзХЭШХ ЯРаРЬХваР NLS
А вот запускаю из терминала SQL*Plus
SQL*Plus: Release 10.2.0.1.0 - Production on Fri May 4 15:31:02 2007
Copyright © 1982, 2005, Oracle. All rights reserved.
Enter user-name: system
Enter password:
Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
Установил Oracle Database Express Edition, но не могу найти где поменять настройку параметра NLS_LANG?
Не помню такого шага при установке.
Если я правильно понял, это переменная окружения хоста, поэтому
export NLS_LANG=AMERICAN_AMERICA.CL8ISO8859P5
в скрипте инициализации оболочки -
/.bashrc
Естественно, значение переменной и скрипт подставить свои.
Не помню такого шага при установке.
Если я правильно понял, это переменная окружения хоста, поэтому
export NLS_LANG=AMERICAN_AMERICA.CL8ISO8859P5
в скрипте инициализации оболочки -
/.bashrc
Естественно, значение переменной и скрипт подставить свои.
Пытаюсь сделать connect к удаленной БД в SQL*Plus, а она выдает
SQL> connect system/[email protected]/fis8_1p
ERROR:
ORA-00604: ЮиШСЪР ЭР аХЪгабШТЭЮЬ SQL-гаЮТЭХ 1
ORA-12705: ГЪРЧРЭЮ ЭХТХаЭЮХ ШЫШ ЭХШЧТХбвЭЮХ
ЧЭРзХЭШХ ЯРаРЬХваР NLS
]$ echo $NLS_LANG
AMERICAN_AMERICA.CL8MSWIN1251
[SOZ@localhost
]$ echo $NLS_LANG
AMERICAN_AMERICA.CL8MSWIN1251
[SOZ@localhost
CL8MSWIN1251
CL8MSWIN1251
Вообще-то у меня в окружении стоит:
]$ echo $LANG
ru_RU.UTF-8
[SOZ@localhost
Параметр LANG=ru_RU.UTF-8 не играет роли, я его устанавливал как en_US.UTF-8. Это ничего не дало.
Если я стартую SQL*Plus через терминал (командную строку) то соединение проходит нормально.
Если стартую из меню выбором пункта меню "Run SQL Command Line" то получаю
SQL*Plus: Release 10.2.0.1.0 - Production on Пт Май 4 10:09:58 2007
Copyright © 1982, 2005, Oracle. All rights reserved.
SQL> conn system/[email protected]/fis8_1p
ERROR:
ORA-00604: ЮиШСЪР ЭР аХЪгабШТЭЮЬ SQL-гаЮТЭХ 1
ORA-12705: ГЪРЧРЭЮ ЭХТХаЭЮХ ШЫШ ЭХШЧТХбвЭЮХ
ЧЭРзХЭШХ ЯРаРЬХваР NLS
А вообще поиск в гугле ORA-12705 может многое прояснить.
А вообще поиск в гугле ORA-12705 может многое прояснить.
Нет соединение при обеих параметрах из окна терминала проходя нормально, проблемма в подключении при старте из пункта меню "Run SQL Command Line".
Итак, многие путаются в подарке с кодировками, особенно жертвы маркетинга Билла Гейтса.
NLS_LANG - параметр клиентской части . Т.е. он используется для подключения клиента. Сопоставлять этот параметр на сервере и клиенте нет смысла. На сервере он только для клиентской части, подключающейся локально.
NLS_LANG может выставляться через переменные окружения и через реестр Windows. Приоритетным считается выставление переменных окружения. Именно через них я и предпочитаю выставлять NLS_LANG, собственно, рекомендую. С реестром много нюансов, начиная с того, что там идет дробление по HOME и заканчивая тем, что винда иногда ветку не может прочитать.
В настоящий момент на территории России в ходу следующие варианты префиксов:
AMERICAN_AMERICA
RUSSIAN_CIS
RUSSIAN_RUSSIA
собственно, RUSSIAN_CIS устарела достаточно давно, однако, старые клиенты все еще используют этот префикс. Мне кажется, что RUSSIAN_CIS используют клиенты до 11 версии, могу ошибаться - поправьте, пожалуйста. Главное - помнить об этом моменте.
О кодировках. В России, соответственно, чаще всего используются:
AL32UTF8 - UTF-8, это Linux
CL8MSWIN1251 - Windows-1251
RU8PC866 - Windows в консоли
CL8ISO8859P5 - кодировка, например, используемая ЦФТ на Solaris
Если вы ошибетесь в написании параметра или его значения, он будет проигнорирован. В некоторых случаях sqlplus будет ругаться.
В общем и целом могу порекомендовать на сервере использовать префикс AMERICAN_AMERICA, кодировку, совпадающую с кодировкой базы, выставляя это глобальной переменной.
Например, для Супермага это
На клиенте все немного сложнее, поскольку клиент может стоять не один, с репортсами и прочим. Вообще по умолчанию клиентская часть и так нормально работает. Если же нет - лучше смотреть в каждом конкретном случае.
Читайте также: