【Oracle】数据库中文乱码查找原因及解决办法

一、问题

数据库中文乱码该如何处理;

二、分析

导致乱码的原因主要有两个,见下面3项的后两个链接:
首先,大家可以看下这篇文章,分析乱码原因;
其次,大家可以看下这篇文章,讲如何修改字符集;
最后,大家可以看下这篇文章,讲如何修改Oracle数据库内部的字符集;
我目前 面临的问题就是,最后一个问题:我的数据库中的NLS_CHARACTERSET是“WE8MSWIN1252”,而不是能展示中文的“ZHS16GBK”或“UTF8”;
在这里插入图片描述

三、解决

请参考如下步骤,登陆SQLPlus中具备sysdba管理员角色的用户来操作;否则会报错权限不足,当然,是乱码的形式;
在这里插入图片描述
1、用sysdba管理员角色权限登陆sqlPlus:
sqlplus “/ as sysdba”
在这里插入图片描述

2、先关闭database;
SQL> SHUTDOWN IMMEDIATE;
在这里插入图片描述

3、开启mount
SQL> STARTUP MOUNT;
在这里插入图片描述
4、允许严格session;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
在这里插入图片描述
5、修改任务队列进程为0;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
在这里插入图片描述

6、修改设置aq_tm_processes为0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
在这里插入图片描述

7、
SQL> ALTER DATABASE OPEN;
在这里插入图片描述8、修改数据库字符集设置内部使用字符集为UTF8;
SQL> ALTER DATABASE CHARACTER SET INTERNAL_USE UTF8;
在这里插入图片描述
9、关闭
SQL> SHUTDOWN IMMEDIATE;
在这里插入图片描述
10、重启
SQL> STARTUP;
在这里插入图片描述
11、检查是否修改了database的内部字符集;
在这里插入图片描述
12、查看我原来的业务数据;
在这里插入图片描述
13、删除我原来的数据,重新插入
在这里插入图片描述

OK,修改完毕;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶洲川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值