解决 oracle 12c 中文字符占三个字节的问题

解决oracle 12c中文字符占三个字节的问题

需要将 oracle 12c 字符集修改 AL32UTF8 改为 ZHS16GBK,因为AL32UTF8 默认一个中文字符占三个字节,ZHS16GBK默认一个中文字符占两个字节。


首先最重要的事:备份!备份数据!别忘记备份数据!

C:\Windows\system32>sqlplus /nolog
 
SQL*Plus: Release 12.1.0.2.0 Production on 星期二 227 10:59:23 2018
 
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
 
SQL> conn / as sysdba
已连接。
SQL> select userenv('language') from dual;
 
USERENV('LANGUAGE')
--------------------------------------------------------------------------------
 
SIMPLIFIED CHINESE_CHINA.AL32UTF8
 
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> STARTUP MOUNT EXCLUSIVE;
ORACLE 例程已经启动。
 
Total System Global Area 2533359616 bytes
Fixed Size                  3835256 bytes
Variable Size             738200200 bytes
Database Buffers         1778384896 bytes
Redo Buffers               12939264 bytes
数据库装载完毕。
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 INTERNAL_USE ZHS16GBK;
 
数据库已更改。
 
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;
 
数据库已更改。
 
SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> STARTUP
ORACLE 例程已经启动。
 
Total System Global Area 2533359616 bytes
Fixed Size                  3835256 bytes
Variable Size             738200200 bytes
Database Buffers         1778384896 bytes
Redo Buffers               12939264 bytes
数据库装载完毕。
数据库已经打开。
SQL> select userenv('language') from dual;
 
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
 
SQL> col parameter format a32;
SQL> col value format a32;
SQL> select * from nls_database_parameters;
 
PARAMETER                        VALUE
-------------------------------- --------------------------------
NLS_RDBMS_VERSION                12.1.0.2.0
NLS_NCHAR_CONV_EXCP              FALSE
NLS_LENGTH_SEMANTICS             BYTE
NLS_COMP                         BINARY
NLS_DUAL_CURRENCY                $
NLS_TIMESTAMP_TZ_FORMAT          DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_TZ_FORMAT               HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_FORMAT             DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_FORMAT                  HH.MI.SSXFF AM
NLS_SORT                         BINARY
NLS_DATE_LANGUAGE                AMERICAN
 
PARAMETER                        VALUE
-------------------------------- --------------------------------
NLS_DATE_FORMAT                  DD-MON-RR
NLS_CALENDAR                     GREGORIAN
NLS_NUMERIC_CHARACTERS           .,
NLS_NCHAR_CHARACTERSET           AL16UTF16
NLS_CHARACTERSET                 ZHS16GBK
NLS_ISO_CURRENCY                 AMERICA
NLS_CURRENCY                     $
NLS_TERRITORY                    AMERICA
NLS_LANGUAGE                     AMERICAN
 
已选择 20 行。
 
SQL>

修改完成!
原文链接:
https://blog.csdn.net/antma/article/details/79385497

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值