我想设置一个数据库( Oraclev 12.1.0.2 ),其中NLS_CALENDAR
参数为 ' Thai Buddha' ,同时我需要将字符集保存为 AL32UTF8 。
当我在设置NLS_CALENDAR
参数时执行此操作时,不会在DB级别更改。 SELECT SYSDATE FROM DUAL
返回当前日期A.D (年份为2016年,泰语为2559)
但如果我改变会话并将NLS_CALENDAR
参数设置为 '泰佛' SELECT SYSDATE FROM DUAL
< / strong>以年份 2559
返回日期。
为了完成这项工作,我应该遵循哪些具体指导原则?或者我应该更改其他参数吗?
答案 0 :(得分:2)
这应该在数据库创建时设置 - 输入数据之前 。但是,如果您无法重新创建数据库,请将其连接为sysdba
:
SHUTDOWN IMMEDIATE;
STARTUP RESTRICT;
ALTER DATABASE CHARACTER SET AL32UTF8;
或使用migration instructions provided by Oracle
在数据库级别change NLS
Oracle parameters,您必须使用ALTER SYSTEM ... SCOPE=BOTH
或ALTER DATABASE ...
所以对你的情况来说:
ALTER SYSTEM SET NLS_CALENDAR="Thai Buddha" SCOPE=BOTH;
中深入了解更多信息
答案 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