четверг, 8 ноября 2012 г.

NLS (Oracle)

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. Какая из  кодировок (клиент/сервер) имеет приоритет?
Параметры сеанса (клиентские) имеют приоритет над параметрами экземпляра и базы данных. Параметры экземпляра имеют приоритет выше, чем настройки базы данных.
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;

Комментариев нет:

Отправить комментарий