注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

饥民2011

一直在搬砖

 
 
 

日志

 
 
 
 

转: Linux 下修改oracle 的字符集:WE8ISO8859P1 修改为 ZHS16GBK  

2012-09-14 00:36:52|  分类: Oracle |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

转自:http://blog.csdn.net/lvbang_lzt/article/details/6308947

问题描述:同事在Linux下安装的oracle,默认的字符集没有修改,使用的是WE8ISO8859P1,不能够支持中文,

问题表现为,客户端录入的中文数据可以显示,提交之后再查询出来后中文会显示为???。问题出在oracle服务端的字符集不支持中文导致。

 

 

可以通过:

select   userenv('language')   from   dual; 命令可以查看服务端的使用的字符集。

或者select   *   from   V$NLS_PARAMETERS;命令也可以

以及 select * from SYS.PROPS$;

 

 

确定了问题后就Google了一下,网上倒是有很多这方面的资料。可能是自己的环境和他们的不一致的原因,按照网上的那些步骤我的问题没有解决。

 

问题根源找到了就好解决了,参考着网上的资料自己的解决步骤如下:

 

 

总的来说有两个思路:

1、重新安装

2、修改字符集

 

注:第一个方法没有用,觉得重装不是我喜欢的道道,解决问题是根本。所以我选择的是第二种方式。

 

 

 

网上很多人说,oracle服务端安装好了之后字符集是不可以更改的,实践证明是可以修改的,至少oracle8以上的版本都是可以修改的。

 

我的解决步骤:

1、ssh登录,切换到oracle用户

切换用户命令:su -oracle

之后用sqlplus登录oracle,命令:

:sqlplus /nolog

:connect /as sysdba

这样就登录了。

2、更改字符集

首先 sqlplus登录后,关闭oracle数据库

1.shutdown immediate ;    
2.startup mount ;    
3.alter  system enable restricted session ;     
4.alter  system  set  JOB_QUEUE_PROCESSES=0;     
5.alter  system  set  AQ_TM_PROCESSES=0;     
6.alter   database   open  ;     
7. alter database character set INTERNAL_USE ZHS16GBK;     
8.shutdown immediate ;    
9.startup ;    

 

注:一开始我按照上面的步骤没有解决,因为在第7步的时候有的资料提示使用 alter database character set ZHS16GBK;我试过,这个命令不行,我使用的是alter database character set INTERNAL_USE ZHS16GBK; 提示修改成功。同样,如果在startup mount 下命令提示error的话,可以尝试在startup restrict下运行第七步的命令。

 

 

以下是我的调试命令记录,大家可以参考一下,那些提示错误的命令都是执行失败的,可以不必管。

 

 

SQL> conn /as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size             104859216 bytes
Database Buffers          176160768 bytes
Redo Buffers                2973696 bytes
Database mounted.
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;

Database altered.

 

----这是按照网上的步骤执行,但是命令都执行失败,所以这些命令对我的环境来说是不行的
SQL> alter database character set ZHS16GBK;
alter database character set ZHS16GBK
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set

 

---我也尝试了换用其它的字符集,也是不行,同样报错
SQL> alter database character set AL32UTF8;
alter database character set AL32UTF8
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set

 

 

 

 

 

---至此网上的步骤调试失败,所以我继续查资料,又进行了如下的调试

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup restrict
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size             113247824 bytes
Database Buffers          167772160 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.

 

---一开始我是用的是如下的命令,结果失败
SQL> alter database character set simplified chinese_china.zhs16gbk;
alter database character set simplified chinese_china.zhs16gbk
                                        *
ERROR at line 1:
ORA-00933: SQL command not properly ended

 

--我尝试了两次,改成大写也不行,
SQL> alter database character set simplified CHINESE_CHINA.ZHS16GBK;
alter database character set simplified CHINESE_CHINA.ZHS16GBK
                                        *
ERROR at line 1:
ORA-00933: SQL command not properly ended

 

--最后,我使用了这命令,提示执行成功,之后通过测试中文乱码问题解决
SQL> alter database character set INTERNAL_USE ZHS16GBK;

Database altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size             113247824 bytes
Database Buffers          167772160 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
SQL>

  评论这张
 
阅读(188)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017