NLS (National Language Support) - Поддержка национального языка, используется для
определения настроек национального формата даты, чисел, валюты и языковых
настроек. Например, символов доллара или евро для различных стран.
Вопросы:
1. Как узнать кодировку на сервере:
Параметры экземпляра
SELECT * FROM NLS_INSTANCE_PARAMETERS;
Параметры БД
SELECT * FROM NLS_DATABASE_PARAMETERS;
2.Как узнать кодировку на клиенте:
SELECT * FROM NLS_SESSION_PARAMETERS;
или
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
значение переменной окружения NLS_LANG
Возможные установки CHARACTERSET для кириллицы на клиенте
PARAMETER VALUE
-------------------- --------------------
LANGUAGE RUSSIAN
LANGUAGE AMERICAN
TERRITORY CIS - (СНГ)
CHARACTERSET CL8ISO8859P5 - ISO Cirillic
CHARACTERSET RU8PC866 - DOS 866
CHARACTERSET RU8BESTA - Unix KOI8r
CHARACTERSET RU8PC855 - Unix Cirillic
CHARACTERSET CL8MACCYRILLIC - MAC Cirillic
CHARACTERSET CL8MACCYRILLICS - MAC Cirillic
CHARACTERSET CL8MSWIN1251 - Win95/NT
CHARACTERSET CL8KOI8R - KOI8r
Возможные установки CHARACTERSET для английского языка на клиенте
PARAMETER VALUE
-------------------- --------------------
LANGUAGE AMERICAN
TERRITORY AMERICA
CHARACTERSET WE8ISO8859P1 - ISO english
CHARACTERSET US7ASCII - 7bit english
Возможные установки языковых параметров сервера БД для кириллицы
select * from sys.V_$NLS_VALID_VALUES;
3. Какая из кодировок (клиент/сервер) имеет приоритет?
Синтаксис и возможные варианты значения переменной:
<Язык>_<Территория>.<Кодировка>
где
<Язык> - язык сообщений
<Территория> - NLS параметры - представление дат, разделителей и т.п. по умолчанию
и СОРТИРОВКА ! Но можно задать отдельно NLS_SORT
<Кодировка> - CHARACTERSET в котором работает клиент и желает видеть и вводить данные
5. Как поменять кодировку БД с данными.
Возможно либо правкой системной таблицы
SQLPLUS> connect sys/password as sysdba;
SQLPLUS> shutdown immediate;
SQLPLUS> startup mount;
SQLPLUS> alter system enable restricted session;
SQLPLUS> alter system set job_queue_processes=0;
SQLPLUS> alter system set aq_tm_processes=0;
SQLPLUS> alter database open;
SQLPLUS> UPDATE PROPS$ SET VALUE$='CL8MSWIN1251' WHERE NAME='NLS_CHARACTERSET';
SQLPLUS> shutdown immediate;
SQLPLUS> startup;
либо
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET INTERNAL_USE CL8MSWIN1251;
SHUTDOWN;
STARTUP;
Вопросы:
1. Как узнать кодировку на сервере:
Параметры экземпляра
SELECT * FROM NLS_INSTANCE_PARAMETERS;
Параметры БД
SELECT * FROM NLS_DATABASE_PARAMETERS;
2.Как узнать кодировку на клиенте:
SELECT * FROM NLS_SESSION_PARAMETERS;
или
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
значение переменной окружения NLS_LANG
Возможные установки CHARACTERSET для кириллицы на клиенте
PARAMETER VALUE
-------------------- --------------------
LANGUAGE RUSSIAN
LANGUAGE AMERICAN
TERRITORY CIS - (СНГ)
CHARACTERSET CL8ISO8859P5 - ISO Cirillic
CHARACTERSET RU8PC866 - DOS 866
CHARACTERSET RU8BESTA - Unix KOI8r
CHARACTERSET RU8PC855 - Unix Cirillic
CHARACTERSET CL8MACCYRILLIC - MAC Cirillic
CHARACTERSET CL8MACCYRILLICS - MAC Cirillic
CHARACTERSET CL8MSWIN1251 - Win95/NT
CHARACTERSET CL8KOI8R - KOI8r
Возможные установки CHARACTERSET для английского языка на клиенте
PARAMETER VALUE
-------------------- --------------------
LANGUAGE AMERICAN
TERRITORY AMERICA
CHARACTERSET WE8ISO8859P1 - ISO english
CHARACTERSET US7ASCII - 7bit english
Возможные установки языковых параметров сервера БД для кириллицы
select * from sys.V_$NLS_VALID_VALUES;
3. Какая из кодировок (клиент/сервер) имеет приоритет?
Параметры сеанса (клиентские) имеют
приоритет над параметрами экземпляра и базы данных. Параметры экземпляра имеют
приоритет выше, чем настройки базы данных.
4. На какие части делится nls_lang? за что отвечают?Синтаксис и возможные варианты значения переменной:
<Язык>_<Территория>.<Кодировка>
где
<Язык> - язык сообщений
<Территория> - NLS параметры - представление дат, разделителей и т.п. по умолчанию
и СОРТИРОВКА ! Но можно задать отдельно NLS_SORT
<Кодировка> - CHARACTERSET в котором работает клиент и желает видеть и вводить данные
5. Как поменять кодировку БД с данными.
Возможно либо правкой системной таблицы
SQLPLUS> connect sys/password as sysdba;
SQLPLUS> shutdown immediate;
SQLPLUS> startup mount;
SQLPLUS> alter system enable restricted session;
SQLPLUS> alter system set job_queue_processes=0;
SQLPLUS> alter system set aq_tm_processes=0;
SQLPLUS> alter database open;
SQLPLUS> UPDATE PROPS$ SET VALUE$='CL8MSWIN1251' WHERE NAME='NLS_CHARACTERSET';
SQLPLUS> shutdown immediate;
SQLPLUS> startup;
либо
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET INTERNAL_USE CL8MSWIN1251;
SHUTDOWN;
STARTUP;
Комментариев нет:
Отправить комментарий