暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker上Oracle字符集乱码问题解决

一打橙子 2020-06-12
1820


             

不爱学习的xulin_ui


字符集乱码问题比较普遍,插入中文出现乱码。如下图

有两种可能造成上面这种情况,一种是由于Oracle服务器端字符编码 和 Oracle客户字符编码不一致引起的。另一种是服务器端和客户端字符编码都是AMERICAN_AMERICA.WE8MSWIN1252

检查Oracle服务器端字符编码:SQL>select userenv('language') from dual;

检查Oracle客户端字符编码:SQL>select * from v$nls_parameters a where a.PARAMETER = 'NLS_CHARACTERSET';

第一种情况,网上很多资料可以找到解决方法,我这里讲一下第二种情况怎么解决。划重点了,这是要考的喔。


首先进入Docker的Oracal容器中,输入sqlplus后以SYS超级管理员登录:sys/你的sys用户密码  as sysdba  

将数据库启动到RESTRICTED模式下做字符集更改。SQL>alter system enable restricted session;

将字符集设置成AMERICAN_AMERICA.ZHS16GBK: SQL>ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 

到这一步,如果显示SQL>Database altered.就设置成功啦,如果你提示是ERROR at line 1:

ORA-12721: operation cannot execute when other sessions are active


当前有连接处于active状态,kill掉session或者重启数据库。
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter system enable restricted session;
SQL> alter database open;SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;


最最后SQL> alter system disable restricted session;关掉RESTRICTED模式。大功告成!



END

关注的都是帅哥美女,(>Д<)



文章转载自一打橙子,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论