Проблема с NLS_LANG
В случаях, когда в качестве языка и кодировки для БД не выбрано значение по умолчанию, при работе в консоли sqlplus может возникнуть проблема отображения ответных сообщений:
[oracle@database ~]$ sqlplus <1>
Enter user-name: / as sysdba <2>
SQL> select; <3>
select
*
ERROR at line 1:
ORA-00936: ??????????? ????????? <4>
|
- Запуск sqlplus
- Авторизация
- Запуск тестового (неполного) запроса
- Информация об ошибке не читается
Причиной неверного отображения сообщений является несоответствие значения переменной окружения NLS_LANG с соответствующими значениями в БД.
Для решения этой проблемы сначала необходимо определить текущие NLS настройки БД, а точнее значение трёх параметров:
- NLS_LANGUAGE
- NLS_TERRITORY
- NLS_CHARACTERSET
SQL> select VALUE from NLS_DATABASE_PARAMETERS where PARAMETER='NLS_LANGUAGE'; VALUE RUSSIAN SQL> select VALUE from NLS_DATABASE_PARAMETERS where PARAMETER='NLS_TERRITORY'; VALUE RUSSIA SQL> select VALUE from NLS_DATABASE_PARAMETERS where PARAMETER='NLS_CHARACTERSET'; VALUE AL32UTF8 |
Переменная окружения NLS_LANG имеет формат:
language_territory.characterset |
Остаётся установить подходящее для этой БД значение переменной NLS_LANG и приступить к работе в консоли sqlplus в нормальном режиме:
[oracle@database ~]$ export NLS_LANG=RUSSIAN_RUSSIA.AL32UTF8 <1>
[oracle@database ~]$ sqlplus <2>
Enter user-name: / as sysdba <3>
SQL> select; <4>
select
*
ERROR at line 1:
ORA-00936: отсутствует выражение <5>
|
- Установка значения переменной NLS_LANG
- Запуск sqlplus
- Авторизация
- Запуск тестового (неполного) запроса
- Информация об ошибке теперь читается
