Проблема с 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
- Авторизация
- Запуск тестового (неполного) запроса
- Информация об ошибке теперь читается