Настройте базу данных с параметром 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