Настройте базу данных с параметром NLS_CALENDAR как "Тайский Будда"

Я хочу создать базу данных (Oraclev 12.1.0.2) с NLS_CALENDAR параметр "Тайский Будда", в то же время мне нужно сохранить набор символов как AL32UTF8.

Когда я делаю это при настройке NLS_CALENDAR параметр не изменяется на уровне БД. SELECT SYSDATE FROM DUAL Возвращает текущую дату в AD (год - 2016, на тайском - 2559)

Но если я изменю сессию и установлю NLS_CALENDAR параметр как "Тайский Будда" SELECT SYSDATE FROM DUAL возвращает дату с годом как 2559,

Есть ли какие-то конкретные рекомендации, которым я должен следовать, чтобы добиться этого? Или есть какие-то другие параметры, которые я должен изменить?

3 ответа

Решение

В случае, если кто-то еще ищет это, это можно сделать при настройке базы данных. Изменить следующие NLS_PARAMETERS

NLS_CALENDAR  = 'Thai Buddha'; 
NLS_DATE_LANGUAGE  = 'THAI'; 
NLS_DATE_FORMAT = 'DD_MM_RR';

Это подойдет. ура

Установить Charset:

Это должно быть установлено во время создания базы данных - перед вводом данных. Но если вы не можете восстановить базу данных, подключенную как sysdba:

SHUTDOWN IMMEDIATE;
STARTUP RESTRICT;
ALTER DATABASE CHARACTER SET AL32UTF8;

Или используйте инструкции по миграции, предоставленные Oracle

Установить календарь:

Поменять NLS Параметры Oracle на уровне базы данных, вы должны использовать ALTER SYSTEM ... SCOPE=BOTH или же ALTER DATABASE ...

Итак, для вашего случая:

ALTER SYSTEM SET NLS_CALENDAR="Thai Buddha" SCOPE=BOTH;

Вы должны покопаться для получения дополнительной информации в документации Oracle

Чтобы внести изменения на уровне по умолчанию, необходимо внести изменения на уровне реестра.

По умолчанию значение NLS_LANG, если оно не установлено, равно AMERICAN_AMERICA.US7ASCII. Похожий случай - NLS_CALENDER. Пожалуйста, проверьте ниже ссылку:

https://docs.oracle.com/cd/B28359_01/win.111/b32010/registry.htm

Другие вопросы по тегам