使用NLS_CALENDAR参数设置数据库为“泰国佛陀”#39;

时间:2016-07-22 06:31:25

标签: database oracle calendar thai

我想设置一个数据库( Oraclev 12.1.0.2 ),其中NLS_CALENDAR参数为 ' Thai Buddha' ,同时我需要将字符集保存为 AL32UTF8

当我在设置NLS_CALENDAR参数时执行此操作时,不会在DB级别更改。 SELECT SYSDATE FROM DUAL 返回当前日期A.D (年份为2016年,泰语为2559)

但如果我改变会话并将NLS_CALENDAR参数设置为 &#39;泰佛&#39; SELECT SYSDATE FROM DUAL < / strong>以年份 2559 返回日期。

为了完成这项工作,我应该遵循哪些具体指导原则?或者我应该更改其他参数吗?

3 个答案:

答案 0 :(得分:2)

设置Charset:

这应该在数据库创建时设置 - 输入数据之前 。但是,如果您无法重新创建数据库,请将其连接为sysdba

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

或使用migration instructions provided by Oracle

设置日历:

在数据库级别change NLS Oracle parameters,您必须使用ALTER SYSTEM ... SCOPE=BOTHALTER DATABASE ...

所以对你的情况来说:

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

您必须在Oracle Documentation

中深入了解更多信息

答案 1 :(得分:2)

如果有人仍然在寻找这个,可以在设置数据库时完成。更改NLS_PARAMETERS

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

这样做。干杯

答案 2 :(得分:1)

要在defualt级别进行更改,您需要进行注册表级别更改。

NLS_LANG的默认值,如果未设置,则为AMERICAN_AMERICA.US7ASCII。类似于NLS_CALENDER的情况。请查看以下链接:

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