通行证: 用户 密码 网站建设  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>数 据 库>>Oracle>>正文 新版上线![旧版]
注:打开慢时请稍等

Oracle数据转储时字符集的转换规律

http://www.iyit.net  日期:2007-1-4 17:07:16  来源:  点击:
参加讨论

作为一个Oracle数据库的用户,对于Export和Import两个命令绝对不会感到陌生,因为这二者正是我们经常用于数据备份和恢复的工具。但在使用这两个命令过程中所发生的Oracle字符集问题,常给一些Oracle使用者带来不必要的麻烦和不必要的数据损失。本文将就Export和Import过程中Oracle字符集的转换规律及使用这两个命令的注意事项做一总结。

字符集转换的原因

  

Export、Import过程如上图所示,从这个示意图中可以看到有四处关系到字符集,而这四处字符集的不一致恰恰是导致Oracle进行字符集转换的原因。

* 源数据库字符集;

* Export过程中用户会话字符集;

* Import过程中用户会话字符集;

* 目标数据库字符集。

在Export和Import过程中,如果存在影响字符集转换的四因素不一致,则可能发生Oracle字符集转换,即:

在Export过程中,如果源数据库字符集与Export用户会话字符集不一致,会发生字符集转换,并在导出的二进制格式Dmp文件的头部几个字节中存储Export用户会话字符集的ID号。在这个转换过程中可能发生数据的丢失。

例1: 如果源数据库使用ZHS16GBK,而Export用户会话字符集使用US7ASCII,由于ZHS16GBK是8位字符集,而US7ASCII是7位字符集,这个转换过程中,中文字符在US7ASCII中不能够找到对等的字符,所以所有中文字符都会丢失而变成“?? ”形式,即这种转换后生成的Dmp文件已经发生了数据丢失。

例2: 如果源数据库使用ZHS16GBK,而Export用户会话字符集使用ZHS16CGB231280,但由于ZHS16GBK字符集是ZHS16CGB231280字符集的超集,这个过程中绝大部分字符都能够正确转换,只有一些超出ZHS16CGB231280字符集的字符变为“?? ”形式。如果源数据库使用ZHS16CGB231280字符集,而Export用户会话使用ZHS16GBK字符集,则转换过程能够完全转换成功。

在Import向目标数据库转换过程中,其字符集发生转换的情况正好与Export过程相反,这里不再详述。

在Export导出的Dmp文件中,含有Export用户会话字符集。在Import过程中,首先发生的是Dmp文件字符集(即Export用户会话字符集)向Import用户会话字符集的转换。如果这个转换过程不能正确完成,Import向目标数据库的导入过程也就不能完成。

进行字符集的正确转换

通常情况下,我们在使用Oracle的Export和Import过程中,并不希望发生字符的转换,但有时这种转换却是必要的。如我们在安装Oracle数据库时,选择ZHS16CGB231280字符集,由于这种字符集是一种中文小字符集,对于一些汉字不能够正确表示,这需要通过使用ZHS16GBK字符集得到解决,此时就要进行字符集的转换。

为了确保Export、Import过程中,Oracle字符集不发生转换或正确转换,建议最好在进行这个过程前,检查一下源数据库字符集与Export用户会话字符集是否一致,源数据库字符集与目标数据库字符集是否一致,目标数据库字符与Import用户会话字符集是否一致。如果能够保证这四个字符集是一致的,则在Export、Import过程中,Oracle字符集就不用发生转换。

可用以下办法检查数据库字符集:

通过InitXXXX.ora文件进行查看;

借助SQL语句查看: SELECT NAME,VALUE$ FROM SYS.PROPS$ WHERE NAME=‘NLS_CHARACTERSET’。

对于Export、Import用户会话字符集,在Windows系统中也可以通过注册表中的NLS_LANG进行查看或修改,对于Unix系统则可通过设置用户的环境变量NLS_LANG来查看或修改。

特别要注意的是,Oracle数据库字符集通常是在创建时确定,一旦存储用户数据后就不要再修改了,因为其数据都是使用该字符集进行存储的,改换其他字符集之后,原有数据就不能够正确表示了。但如果确实想进行字符集改变,则可通过以下几步来实现:

备份数据库后删除原数据(可物理备份,如使用Export,请注意确保字符集不发生转换或数据无损失);

本新闻共3页,当前在第1页  1  2  3  


编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:Oracle中集成安装客户端与应用程序
下一篇:关于提高Oracle数据库性能的四个误区
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
Oracle数据的异地自动备份 Oracle数据库的ORA-00257故障解决过程 ORACLE的日志管理
用 Oracle AS 10g 为PHP提供的一次性登 关于提高Oracle数据库性能的四个误区 Oracle中集成安装客户端与应用程序
关于Oracle实例的进程结构和内存结构 Oracle家电行业供应链及制造管理方案 基于Oracle ADF的应用程序开发
Oracle数据库访问限制绕过漏洞
最新更新 热点排行 推荐新闻
Oracle数据的异地自动备份
Oracle数据库的ORA-00257故障解决过程
ORACLE的日志管理
你的INTERNAL帐号密码忘记了怎么办
用 Oracle AS 10g 为PHP提供的一次性登
高手清除系统垃圾完全手册(3)
高手清除系统垃圾完全手册(2)
高手清除系统垃圾完全手册(1)
2007,个人站长何去何从?
QQ密技十五招
Oracle数据的异地自动备份
Oracle数据库的ORA-00257故障解决过程
ORACLE的日志管理
你的INTERNAL帐号密码忘记了怎么办
用 Oracle AS 10g 为PHP提供的一次性登
基于Oracle ADF的应用程序开发
Oracle家电行业供应链及制造管理方案
Oracle数据的异地自动备份
你的INTERNAL帐号密码忘记了怎么办
用 Oracle AS 10g 为PHP提供的一次性登
msn8.0下载、msn shell、msn8.0中文版
windows下如何修改右键菜单
网页里插入视频文件方法大全
金山词霸2007未上市即遭盗版
将自已的程序加到鼠标右键菜单里
QQ挂太阳专家 V1.0.3  下载
06年11月09日石家庄太和CPU、内存、硬
06年11月11日石家庄太和CPU、内存、硬
Windows Vista 5840简体中文版体验心得
QQ号码激活系统常见问题及解决方法
基于Oracle ADF的应用程序开发
高手清除系统垃圾完全手册(3)
高手清除系统垃圾完全手册(2)
高手清除系统垃圾完全手册(1)
2007,个人站长何去何从?
提示“虚拟内存”不足的怎么办
防止网吧电脑掉线现象的高级路由技术
QQ在Windows Vista下蓝屏故障的临时解
对网站改版方案建议 保持网站流量 
妙用ISEE三步将女友照片变为日历
简单实用 最新刷QQ等级方法 

设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2007 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息