Linux sqlplus русские буквы

Научим SQL*Plus говорить по-русски

Долго не мог понять, почему люди не любят пользоваться SQL*Plus.

Оказывается: интерфейс убогий и бестолковый.

Словом, не графический – мышкой ткнуть не куда (значит интуитивно не понятный).

. редко встретишь кодера, умеющего мышкой воять SELECT’ы.

Хотя, соглашусь, что у SQL*Plus есть грешк и .

Один из них — порой SQL*Plus не понимает русский язык .

Например, некоторые столкнулись со следующей заморочкой.

Когда в SQL*Plus вы вводите команду edit, то открывается обычный «Блокнот» — простенький текстовый редактор Windows.

И как бы всё хорошо.

Но если в SQL-команде вы будете использовать слова набранные кириллицей, то после закрытия редактора, в SQL*Plus запросто сможете увидеть кракозябры вместо русских букв.

Как бы не то, что хотелось. Комфортно работать действительно невозможно.

Начнём с того, что во время установки оракла в реестр прописывается параметр NLS_LANG:

Смотрим на значение этого параметра (от знака равно до конца строки). Значение состоит из двух частей.

Значение первой части, которая до точки, я подробно объяснял, когда рассказывал про использование типа DATE. Вторая часть, стоящая после точки, задаёт кодировку символов, которая используется на клиентском компьютере. В этой кодировке вы вводите команды и в ней же получаете от оракла результат.

Если вы сидите за компьютером, на котором развёрнута оракловая база, то знайте, что клиентский софт у вас уже установлен (параметр прописан в реестре) и при работе с ораклом вы активно используете этот софт. Оракловый клиент одинаково работает и на удалённой машине, и на сервере.

Обращаю внимание на 2 момента:

  1. Кодировка базы данных задаётся в параметрах базы, а не в клиентском софте, который установлен на сервер.
  2. Кодировка, которая используется в базе данных, может отличаться от кодировки на клиенте.

Если вы работает в обычной российской конторе, то используйте кодировку CL8MSWIN1251.

Почему SQL*Plus пишет кракозябры?

Сразу скажу, что не все версии SQL*Plus пишут кракозябры.

Пишет кракозябры только консольная версия Windows. Исполняемый файл называется SQLPLUS.EXE

Этой версии и положено так себя вести. Поскольку консоль Windows использует кодировку RU866 (она поддерживается для того, чтобы можно было запускать старые dos-программы), то плюс, будучи консольным приложением, должен поддерживать эту кодировку.

Здесь возникает противоречие: оракловый клиент работает с кодировкой, которая задана параметром NLS_LANG, а консольный SQL*Plus в RU866.

Когда в «Блокноте» набраны русские слова в кодировке CL8MSWIN1251, то SQL*Plus будет их выводить на экран кракозябрами в кодировке RU866.

Это обычная ситуация . Хотя бывают и другие варианты. И есть ещё несколько нюансов. Ради простоты забудем о них.

Чтобы заставить SQL*Plus «говорить по-русски» делайте так:


    Создайте вот такой командный файл Windows (текстовый файл с расширением cmd):


  1. Сохраните его куда-нибудь в рабочую папку и дайте, например, имя starter.cmd

  1. Сделайте на него ярлык.

  1. Откройте свойства ярлыка и установите шрифт семейства Lucida.

Теперь, когда вам нужен будет SQL*Plus, запускайте его через созданный ярлык.

Кстати, есть ещё версия SQL*Plus for Windows – обычное оконное приложение Windows. Эта версия хорошо понимает русский язык. Исполняемый файл называется SQLPLUS W .EXE

В дистрибутиве XE его нет (искал — не нашёл). Чтобы установить SQL*Plus for Windows нужно иметь полноценный дистрибутив ораклового клиента. У меня, например, всегда под рукой проверенный от версии 9.2. Оттуда его и ставлю.

Опубликован: 26 августа 2010, 18:17

Похожие статьи:

При написании SQL запросов есть ряд правил, которым нужно просто следовать. Можно вдаваться в поиски, почему надо писать так, а не иначе, но для понимания нужен багаж и некоторый практический опыт, а ведь зачастую SELECT’ы надо писать уже сейчас, да так, чтобы они летали и после не переписывать.

Большинство считает, что в мире Oracle есть два основных направления: администрирование и программирование. Человек становится либо специалистом в администрировании оракла — умеет правильно ставить базы, повышать производительнось и восстанавливать то, что восстановлению не подлежит.

Решил публично ответить одному из подписчиков. Дело в следующем. У меня на сайте есть форма, через которую подписчики могут задавать вопросы, но форма анонимная и, даже если захочу, приватно ответить не смогу.

Источник

Linux sqlplus русские буквы

SQL*Plus: Release 10.2.0.1.0 — Production on ╫� └�� 31 15:30:10 2006

Copyright (c) 1982, 2005, Oracle. All rights reserved.

┬������ �����: 31 ��� 06, 15:32����[3077546] �������� | ���������� �������� ����������

Re: ��� �������� ��������� ��� SQLPLUS? [new]
Zavoiko
Member

������:
���������: 238

� regedit ����� ���������: NLS_LANG = AMERICAN_AMERICA.CL8MSWIN1251
31 ��� 06, 15:35����[3077568] �������� | ���������� �������� ����������
Re: ��� �������� ��������� ��� SQLPLUS? [new]
Swet
Member

� ��������� �������� ����. ������ — 0Kb

31 ��� 06, 16:12����[3077828] �������� | ���������� �������� ����������
Re: ��� �������� ��������� ��� SQLPLUS? [new]
Vasil_2006
Member

������:
���������: 213

Microsoft Windows XP [������ 5.1.2600]
(�) ���������� ����������, 1985-2001.

C:\Documents and Settings\�������������>set nls_lang=russian_cis.ru8pc866

C:\Documents and Settings\�������������>sqlplus
Error 5 initializing SQL*Plus
NLS initialization error

C:\Documents and Settings\�������������>

31 ��� 06, 16:19����[3077869] �������� | ���������� �������� ����������
Re: ��� �������� ��������� ��� SQLPLUS? [new]
Vasil_2006
Member

������:
���������: 213

C:\Documents and Settings\�������������>set NLS_LANG = AMERICAN_AMERICA.CL8MSWIN
1251

C:\Documents and Settings\�������������>sqlplus

SQL*Plus: Release 10.2.0.1.0 — Production on ╫� └�� 31 16:26:58 2006

Copyright (c) 1982, 2005, Oracle. All rights reserved.

┬������ ��� �����������:

31 ��� 06, 16:26����[3077938] �������� | ���������� �������� ����������
Re: ��� �������� ��������� ��� SQLPLUS? [new]
Vasil_2006
Member

������:
���������: 213

� regedit’e �� ��������.
31 ��� 06, 16:27����[3077957] �������� | ���������� �������� ����������
Re: ��� �������� ��������� ��� SQLPLUS? [new]
Zavoiko
Member

������:
���������: 238

Vasil_2006
� regedit’e �� ��������.

������� � ������� ���, ��� ��?
31 ��� 06, 17:04����[3078229] �������� | ���������� �������� ����������
Re: ��� �������� ��������� ��� SQLPLUS? [new]
Vasil_2006
Member

������:
���������: 213

����������� �� ����(
31 ��� 06, 17:10����[3078283] �������� | ���������� �������� ����������
Re: ��� �������� ��������� ��� SQLPLUS? [new]
Vasil_2006
Member

������:
���������: 213

������ ����, �� �� ���� ��� �����������.
31 ��� 06, 17:21����[3078376] �������� | ���������� �������� ����������
Re: ��� �������� ��������� ��� SQLPLUS? [new]
xymbo
Member

������: ������� —> ������
���������: 2560

����� ���,��� ���� NLS_LANG
31 ��� 06, 17:22����[3078384] �������� | ���������� �������� ����������
Re: ��� �������� ��������� ��� SQLPLUS? [new]
xymbo
Member

������: ������� —> ������
���������: 2560

������ � HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
31 ��� 06, 17:24����[3078401] �������� | ���������� �������� ����������
Re: ��� �������� ��������� ��� SQLPLUS? [new]
Vasil_2006
Member

C:\Documents and Settings\�������������>sqlplus /h
SP2-1503: Unable to initialize Oracle call interface
SP2-0152: ORACLE may not be functioning properly

Источник

Проблема с кодировкой в Sqlplus (oracle 11 g)

oracle 11g стоит на Windows Server 2008 rus.

Работаю удаленно из хоста под управление windows 10 rus.

Ошибки появляются в непонятной кодировке.

например, при попытке создать подключение с oracle из под пользователя system, появилась вот такая ошибка

A в командной строке Sqlplus ввел команды и получил некоторые ответы

Там было вот такое значение

перезагрузился, но теперь кодировка выглядит так

Есть у кого какие идеи, как настроить кодировку ?

клиент для oracle — используется от oracle db12g, sqlplus — оттуда

Добавлено через 6 минут

Решение
1. Установить кодировку для текущей сессии командной строки.

Будет произведена замена кодовой страницы.

3. Шрифт в консоли должен быть Lucida Console

Варианты входа в sqlplus Oracle 11g
Добрый день! Пытаюсь войти в sqlplus Oracle 11g sqlplus / as sysdba выдает ошибку: Код: .

После установки Oracle не запускается SQLPlus
Всем доброго времени суток! на RHEL установил оракл 10g . Проблем при установке не возникало. Но.

SQLPLUS oracle 11g, работа с *.cmd файлом
Добрый день. Имеется .cmd файл для выполнения скриптов. Подскажите пожалуйста как их прогнать в.

Проблема при переходе с Oracle 8.1.7 на Oracle 9.2.0.1
После полного импорта данных из 8-ки в 9-ку утилитой imp, перестали работать запросы, которые до.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Проблема с Oracle
У меня проблема. Помогите. Viual Basic не подключается к Oracle. Рекордсет зависает во время.

Проблема с SELECT-ом в Oracle 9.1i
SELECT , который работал в старой версии DB, перестал работать и выдает ошибку : ORA-31011 XML.

Oracle+VB=проблема со шрифтами
Здравствуйте. БД на Oracle, приложение на VB. Кирилица замещается знаками ‘?’. Как беду победить.

Проблемы с кодировкой при переносе данных из Access в Oracle
Помогите please. Есть данные в таблицах Access (XP). Нужно их копировать в Оракл. Создал линки.

Источник

Linux sqlplus русские буквы

Начиная с версии Oracle 11.1 GUI утилита sqlplusw.exe объявлена как устаревшая (deprecated) и исключена из состава дистрибутива. Теперь приходиться использовать только консольную версию — sqlplus.exe. При её использовании, с русским языком, возникают проблемы. Сообщения самой sqlplus и сообщения выводимые скриптами (это разные вещи) отображаются не корректно (крякозябрами или символами псевдографики). Еще, некоторые стали задавать вопрос, как установить рабочую папку чтобы выполнялись вложенные скрипты. Разберёмся по порядку:

Проблемы некорректных сообщений возникают из-за того что консоль по умолчанию выводит всё в кодировке OEM DOS 866, а скрипты это обычно текстовые файлы в кодировке MS WIN 1251. Кодировка сообщений sqlplus зависит от переменной NLS_LANG, а т.к. базы с данными на русском языке обычно создаются в кодировке CL8MSWIN1251 (не RU8PC866), то и переменные NLS_LANG устанавливаются соответственно как CL8MSWIN1251. Т.е. проблема из-за несовпадения кодировок консоли и программ, которые выводят сообщения на консоль.

1) Чтобы русские сообщения отображались в консоли корректно нужно соблюсти ТРИ условия.

1. В свойствах консоли (правой мышью на заголовке окна cmd) должен быть установлен unicode шрифт, например Lucida Console.

2. За кодировку выводимых сообщений отвечает третья часть переменной NLS_LANG и она должна быть CL8MSWIN1251 (пример, AMERICAN_CIS.CL8MSWIN1251).

3. Нужно переключить кодовую страницу консоли на 1251, командой

Если все три условия соблюдены — проблем с русскими буквами не будет.

Примечания:

1. Переменную NLS_LANG можно задавать тремя способами:

а) (глобально) (по умолчанию) В реестре в HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE. Здесь переменная может быть в нескольких местах, особенно если на компьютере несколько ORACLE_HOME. Менять её нужно для того ORACLE_HOME из которого запускается sqlplus. Для 64-битных систем существует еще одна ветка реестра для Oracle — HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE. Если вы меняете переменную, а результат не меняется, хотя все остальные условия соблюдены, значит вы меняете не ту переменную, попробуйте поменять вообще все NLS_LANG, которые найдете или см.п. в).

б) (локально) Для конкретной DOS сессии. Прямо в консоли командой set

C:> SET NLS_LANG=AMERICAN_CIS.CL8MSWIN1251

в) (супер глобально) Задать как переменную окружения в ОС. Делать так я настоятельно НЕ рекомендую. Но, такая установка перекрывает переменную в реестре, поэтому если вы меняете NLS_LANG в реестре, а результат не меняется — проверьте переменные окружения, командой set без параметров.

2. Изменение переменной NLS_LANG на глобальном уровне влияет на все другие программы работающие с Oracle, например EXPIMP. Поэтому следует быть осмотрительным и для безопастности, для запуска sqlplus использовать bat или cmd файл в котором менять NLS_LANG на уровне текущей сессии.

2) Чтобы сообщения sqlplus выводились корректно см. п. 1).

Если сделать всё как описано в п.1) то все сообщения sqlplus будут выводить корректно на русском языке. Если у вас нет проблем с английским то я рекомендую выводит сообщения sqlplus на английском языке. Потому что в англоязычном сегменте сети гораздо больше информации чем в русском и если возникнет ошибка то по английскому сообщению найти решение будет проще и быстрее.

За язык сообщений sqlplus и других консольных утилит Oracle отвечает первая часть переменной NLS_LANG. Чтобы все сообщения было на английском языке — её нужно установить как AMERICAN (например, AMERICAN_CIS.CL8MSWIN1251).

3) Как установить рабочую папку чтобы выполнялись вложенные скрипты.

Для этого нужно запустить sqlplus из рабочей папки. Для примера предположим что в качестве рабочей папки нужно использовать папку c:\EGRP\SCRIPTS и запустить скрипт c:\EGRP\SCRIPTS\UPDATE.sql, который вызывает из себя другие скрипты, некоторые из которых находиться в подпапках c:\EGRP\SCRIPTS.

C:\> cd c:EGRP\SCRIPTS
c:\EGRP\SCRIPTS>c:\app32\admin\product\11.2.0\client_1\bin\sqlplus.exe /nolog
SQL> @update

(на картинке еще отображен момент переключения кодовой страницы)

Для удобства использования, можно создать bat или cmd файл для запуска sqlplus.

REM echo off
REM Установка рабочей папки (можно убрать)
cd c:\egrp\scripts
SET NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251
chcp 1251
break
REM Два варианта запуска sqlplus
c:\app\admin\product\11.2.0\dbhome_1\BIN\sqlplus.exe /nolog
REM c:\app\admin\product\11.2.0\dbhome_1\BIN\sqlplus.exe /nolog @UPDATE
exit

Примечания:

— echo off — не выводить выполняемые команды на консоль, а только результат их выполнения. Я предпочитаю видеть что происходит поэтому отключил (REM) эту команду.

Источник

Читайте также:  Windows 10 разместить диск
Оцените статью