Database 版 (精华区)

发信人: kylix (魔法英雄), 信区: Database
标  题: ORACLE字符集的处理(遇到字符集问题的朋友请看) 
发信站: 哈工大紫丁香 (2000年12月31日10:33:00 星期天), 站内信件

Write By:tonnyluo
Create Date:17/11/2000
针对目前很多ORACLE爱好者提出关于ORACLE字符集的问题,本人将自己
多年来解决字符集的一些经验写出来与大家分享,希望能对大家有所帮助。
1.由于客户端与服务器端字符集设置不一致造成的乱码问题
查看服务器端字符集
svrmgrl;
svrmgrl>connect internal;
svrmgrl>select * from props$;
NAME VALUE$
------------------------------ ---------------
NLS_CHARACTERSET ZHS16CGB231280
找到NAME为NLS_CHARACTERSET,VALUE$为字符集设置值。
注:ZHS16CGB231280为ZHS16GBK子集(中文字符集)。
查看客户端字符集(win95/win98)
打开注册表
进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,找到NLS_LANG
看其字符集设置是否为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
或:SIMPLIFIED CHINESE_CHINA.ZHS16CGB231280,如不同,则
将其改为如上其中一种,重新启动机器,可解决问题。
2.对在同版本不同字符集数据库中exp/imp数据
呵呵,如果你准备重装其中一台数据库的话,那就可以不往下看了。
a.首先进入具有DBA用户权限的用户,在SQLPLUS下执行下列命令
sql>create database character set 字符集;
提示信息:* create database character set 字符集。
不用理会它,实际上ORACLE数据库的字符集已被强行修改为你定义的
字符集。然后执行IMP导入数据,但这个功能在ORACLE8里已经不支持了。
b.进入具有DBA权限用户,在SQLPLUS下执行:
sql>update props$ set value$='新字符集' where name='NLS_CHARACTERSET';
sql>commit;
c.下面这种方法是听朋友介绍的,我没有试验过,有兴趣的朋友
可以试验一下(千万不要拿生产系统做测试):
操作系统中修改方法:
svrmgrl;
svrmgrl>connect internal;
svrmgrl>alter database ORCL character set ZHS16GBK;
svrmgrl>alter database ORCL national character set ZHS16GBK;
如有哪位用过此类方法,请叫处理结果告诉我。
d.用PB数据管道、SQLLOAD之类的工具导接不同字符集数据库的数据,
虽然麻烦点,但效果却不会差。
上面是本人处理字符集的一些经验,不对之处,请大家不吝指出!
网上飘

--
如果在流星划过夜空时许愿灵验的话,我愿意彻夜不眠的等待我的那颗,
让它带去我全部的爱恋,在黑夜里照亮你睡梦中甜美的脸,让它在你耳边
轻轻的告诉你:"亲爱的,我永远爱你,永远...虽然你现在并不知道..."

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.112.3.163]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.150毫秒