修改 Oracle 数据库的字符集
修改 Oracle 数据库的字符集,项目中遇到的问题,客户的 Oracle 字符集是 ZHS16GBK,我们是 UTF8,需要将 UTF8 修改为 ZHS16GBK。
库 A 的编码为 gbk,库 B 的编码为 utf-8,两种编码格式下,汉字占的字节数不一样,gbk 为 2 个字节,utf-8 为 3 个字节。所有针对某些情况,需要修改字符集编码。
修改 Oracle 数据库的字符集(UTF8→ZHS16GBK)步骤如下:
1. 登录
以 sysdba 的身份登录上去
conn sys/root as sysdba
2. 关闭数据库
shutdown immediate;
3. 以 mount 打来数据库
startup mount;
4. 设置 session
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
5. 启动数据库
alter database open;
6. 修改字符集
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
7. 关闭,重新启动
shutdown immediate;
startup;
8. 查看修改后的字符集
SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET' ;
select userenv('language') from dual;
当然字符集最好不要轻易修改,因为这会对数据库的数据有直接的影响,
如果是正式环境的话,可能会造成不可估计的损失。
修改完字符集后,数据库中已有的汉字将会出现乱码。请修改编码集前备份数据,修改完编码集后重新导入数据。
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。