Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6928917
  • 博文数量: 637
  • 博客积分: 10265
  • 博客等级: 上将
  • 技术积分: 6165
  • 用 户 组: 普通用户
  • 注册时间: 2004-12-12 22:00
文章分类

全部博文(637)

文章存档

2011年(1)

2010年(1)

2009年(3)

2008年(12)

2007年(44)

2006年(156)

2005年(419)

2004年(1)

分类:

2005-09-26 18:38:55

在此,我要感谢我的那位朝鲜族的朋友
是她帮我翻译的,在措辞上我作了一定的修改,毕竟她不懂Oracle,我也不怎么懂,所以难免还是有错误,抱歉。

============================


我们解决了上面的问题
问题在与oracle9i里 National Charset 边境上有错误
1,如果安装完Oracle 9i,National Charset里的Default Value,就是AL16UTF16.
如果打算把AL16UTF16换成UTF8
按照以前的方法
update sys.props$
set value$ = 'UTF8' where name = ''NLS_NCHAR_CHARACTERSET''; 就会出现上面的问题
在Oracle 里面没有完全反映Charset的信息
所以,在 Table里 Insert时, Value设置成AL16UTF16了,只有Default Space才设置成UTF8了..

2,所以应该这样换
$ sqlplus ‘/ as sysdba’
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT EXCLUSIVE;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE NATIONAL CHARACTER SET UTF8;
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

按上面的做法就可以,但是可能会出现‘ORA-12717: Cannot ALTER DATABASE NATIONAL CHARACTER SET when
NCLOB data exists’ 这样的提示信息

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

一个是,利用INTERNAL_USE 关键字修改区域设置,还有一个是利用re-create,但是re-create有点复杂,所以请用internal_use,
$ sqlplus ‘/ as sysdba’
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT EXCLUSIVE;
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
SQL> SHUTDOWN IMMED

如果按上面的做法做,National charset的区域设置就没有问题
=======================
非常感谢我的那位朋友

阅读(4114) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~