现在的位置: 首页 > 综合 > 正文

修改server端字符集

2012年02月02日 ⁄ 综合 ⁄ 共 1164字 ⁄ 字号 评论关闭

修改server端字符集(不建议使用)

在Oracle 8之前,可以用直接修改数据字典表props$来改变数据库的Oracle字符集。但Oracle8之后,至少有三张系统表记录了数据库字符集的信息,只改props$表并不完全,可能引起严重的后果。正确的修改方法如下:

 

  1. $sqlplus /nolog  
  2. SQL>conn / as sysdba;    

若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令:

 

  1. SQL>STARTUP MOUNT;  
  2. SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;  
  3. SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;  
  4. SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;  
  5. SQL>ALTER DATABASE OPEN;  
  6. SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;  
  7. SQL>ALTER DATABASE national CHARACTER SET ZHS16GBK;  
  8. SQL>SHUTDOWN IMMEDIATE;  
  9. SQL>STARTUP  

 

注意:如果没有大对象,在使用过程中进行语言转换没有什么影响,(切记设定的Oracle字符集必须是Oracle支持,不然不能start) 按上面的做法就可以,但是可能会出现‘ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data exists’ 这样的提示信息

要解决这个问题有两种方法

一个是,利用INTERNAL_USE 关键字修改区域设置,

还有一个是利用re-create,但是re-create有点复杂,所以请用internal_use,

 

  1. SQL>SHUTDOWN IMMEDIATE;  
  2. SQL>STARTUP MOUNT EXCLUSIVE;  
  3. SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;  
  4. SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;  
  5. SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;  
  6. SQL>ALTER DATABASE OPEN;  
  7. SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;  
  8. SQL>SHUTDOWN immediate;  
  9. SQL>startup;  

 

如果按上面的做法做,National charset的区域设置就没有问题上述的相关内容就是对修改Oracle字符集的描述,希望会给你带来一些帮助在此方面。

【上篇】
【下篇】

抱歉!评论已关闭.