设为首页 收藏本站
查看: 980|回复: 0

[经验分享] Oracle 9i数据库字符集全攻略

[复制链接]

尚未签到

发表于 2016-8-6 15:45:50 | 显示全部楼层 |阅读模式
一、简介

Oracle 的字符集存在于服务器端和客户端,同时字符(包括中英文字符)存储于数据库中也是以一定的字符集编码存放
正常情况下,当服务器端与客户端字符集一致,且加载到ORACLE数据库的数据字符集与服务器字符集也一致时,数据方能正常在客户端进行显示

1.服务器字符集可用下面的语句查询:
SELECT * FROM V$NLS_PARAMETERS WHERE parameter LIKE '%CHARACTERSET';

2.客户端的字符集在注册表或环境变量中指示:
注册表:运行REGEDIT,HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0->NLS_LANG
环境变量:NLS_LANG

3.查看数据库中存放的字符编码(以"中"字为例,16进制方式显示):
SELECT '中',DUMP('中',16) FROM dual;

二、Oracle服务器进行字符集转换的规则

Oracle服务器根据客户端的字符集判断是否需要在服务器端进行转换

1.在做查询操作时
a.如果客户端指定的字符集与服务器端指定的字符集一致,则服务器端不进行转换直接将字符编码传到客户端进行解析显示
b.如果客户端指定的字符集与服务器端指定的字符集不一致,刚服务器端将把字符编码转换为客户端指定的字符集编码再传给客户端进行解析显示

2.在做exp操作时
a.如果客户端指定的字符集与服务器端指定的字符集一致,服务器不进行转换直接转储为dmp文件
b.如果客户端指定的字符集与服务器端指定的字符集不一致,服务器将把数据字符集转换为客户端指定的字符集进行转储

3.在做imp操作进
a.如果转储文件的字符集与服务器端指定的字符集一致,服务器不进行转换直接将转储文件导入到数据库中存放
b.如果转储文件的字符集与服务器端指定的字符集不一致,服务器将把转储文件的字符集转换为服务器端指定的字符集进行存放

三、Oracle 9i服务器字符集修改实例  ZHS16GBK -> AL32UTF8

1.客户端指定为ZHS16GBK字符集,用exp工具将所有用户数据导出为转储文件

2.强制转换字符集,数据库应该在RESTRICTED模式下进行
SQLPLUS "/ AS SYSDBA"
SHUTDOWN IMMEDIATE
STARTUP MOUNT
ALTER SESSION SET SQL_TRACE=TRUE;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;
--INTERNAL_USE 用于跳过子集与超集的检查,如果不加会报错
--ALTER SYSTEM DISABLE RESTRICTED SESSION;
SHUTDOWN IMMEDIATE
STARTUP

3.客户端指定为ZHS16GBK字符集,用imp工具将转储文件导入到数据库中

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-253784-1-1.html 上篇帖子: oracle 存储过程 带游标作为OUT参数输出 下篇帖子: 在Java中调用Oracle包中的过程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表