看了网上的文章,乱码有以下几种可能
1. 操作系统的字符集
2.oracle server的字符集
3.客户端的字符集
1. 查看oracle的字符集
- select userenv('language') from dual
2.在Ubuntu中.bashrc 中加入下边的话:
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK(改掉操作系统的字符集)
Oracle NLS_LANG Oracle
3.
但是如果不一致的话,会将数据库中的数据转换成操作系统的字符集,返回给用户。插入时一样,就会将数据先做个转换,然后在插入到数据库。
网上的人是这么说的,但具体的我也没试。我有时间试一下,看是不是他所说的那样。
4.修改Oracle的编码和操作系统的一样。(参考别人的)
登陆用dba
SQL> conn sys/sys as sysdba;
停掉数据库
SQL>shutdown immediate;
启动数据库到mount状态下
SQL> STARTUP MOUNT;
- ORACLE instance started.
- Total System Global Area 76619308 bytes
- Fixed Size 454188 bytes
- Variable Size 58720256 bytes
- Database Buffers 16777216 bytes
- Redo Buffers 667648 bytes
- Database mounted.
SQL> ALTER SESSION SET SQL_TRACE=TRUE;
Session altered.
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
启动数据库
SQL> Alter database open;
设置字符集
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
先把数据库中的有中文乱码的清空了。
然后在执行。这是有可能报错
执行这个ALTER DATABASE character set INTERNAL_USE ZHS16GBK
跳过字符集检查
关闭数据库
SQL> Shutdown immediate;
重启
SQL> startup;
做完之后在sqlplus里边试一下,应该就好了,但是在pl/sql里边一看还是乱码,
最后,在pl/sql里边创建个表,然后在插入中文,查看一下,应该是对的。
这样就解决了乱码问题。 中间还有许多的问题,自己在慢慢研究吧。
============================================================
相关推荐
Oracle 修改字符集Oracle 修改字符集Oracle 修改字符集
oracle11g 修改字符集 修改为ZHS16GBK 有时候因为数据库的字符集的问题,导致dmp文件不能正常导入到其他数据库。可以用下面的方法将数据库的字符集修改一下
oracle 字符集修改命令oracle 字符集修改命令oracle 字符集修改命令oracle 字符集修改命令
安装ORACLE数据库,字符集默认是AL32UTF8,有时需要改变数据库字符集,改成ZHS16GBK,资源里面是修改步骤。
oracle字符集的查看,oracle客户端字符集的修改
怎样修改查看Oracle字符集及怎样修改字符集
修改oracle数据库的字符集方法(RAC),适用RAC
修改Oracle数据库字符集的命令行方法。 在Oracle10g上也可以使用
oracle11g导入报错,很多情况下是字符集不同导致失败,附件为oracle11g更改字符集操作说明,多次实测有效。
NULL 博文链接:https://cqh520llr.iteye.com/blog/2084643
ORACLE修改数据库字符集
ORACLE11g命令行更改字符集,免去你重装浪费的时间
Oracle字符集的问题.总结了一些项目中的实际问题,和解决办法
Oracle 字符集详解,包括查看,修改,导入导出,转换原理
文档详细的介绍了如何实现ORACLE数据库字符集的修改操作。
修改oracle数据库字符集详细的操作命令
oracle字符集快速修改注册表, 方便在iso8859字符集、CGB2312字符集、16GBK字符集间切换,快捷方便实用
oracle修改字符集,解决乱码问题.
Oracle11g 字符集 AL32UTF8 修改为ZHS16GBK .
更改oracle 字符集,