oracle 修改nls_nchar_characterset,修改NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET字符集

修改NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET字符集

2013-07-26

有时候安装oracle未了解清楚需求,设置的字符集导致中文乱码。oracle如何修改字符集呢?

1、查询字符集

SQL> col VALUE format a30

SQL> select * from nls_database_parameters where parameter like '%CHARACTERSET%';

PARAMETER VALUE

------------------------------ ------------------------------

NLS_CHARACTERSET US7ASCII

NLS_NCHAR_CHARACTERSET UTF8

SQL> select value$ from props$ where name='NLS_NCHAR_CHARACTERSET';

VALUE$

-----------------------------

UTF8

2、oracle修改服务器端字符集:

SQL>alter system checkpoint;

SQL>alter system switch logfile;

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP MOUNT EXCLUSIVE;

SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;

SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;

SQL>ALTER DATABASE OPEN;

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;

#####################################################################

ORA-12712: new character set must be a superset of old character set

提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改,INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验. :

#####################################################################

SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;

#####################################################################

注意:

1)这样修改会影响数据库中定义了Nclob、NVARCHAR2等大字段的表,会出现乱码。需要重新导入表,当然在修改前要备份相关表。

2)如果没有大对象,在使用过程中进行语言转换没有什么影响,

3)在Oracle8i中,设定的字符集必须是ORACLE支持,假如修改了错误的字符集,数据库将无法启动。不过从Oracle9i开始,Oracle在启动时跳过了这个检查,即使修改了错误的字符集,也仍然可以启动,数据库启动时会将控制文件中的字符集更改为缺省的US7ASCII.

#####################################################################

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP

3、更新系统表(props$)修改字符集

SQL>update props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';

SQL>update props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';

4、如果还没有数据,最好的办法还是用dbca重新创建instance

5、 确认字符集是否修改

SQL> col VALUE format a30

SQL> select * from nls_database_parameters where parameter like '%CHARACTERSET%';

PARAMETER VALUE

------------------------------ ------------------------------

NLS_CHARACTERSET ZHS16GBK

NLS_NCHAR_CHARACTERSET AL16UTF16

相关日志

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值