新客网
首页 | 新闻 | 系统·网络·服务器·安全 | 工具·办公 | 编程·数据库 | 图象·网页·运营 | 硬件·存储 | 专题教程 | 论坛·old
 → 当前位置:首页 > 教程 > 数据库 > Oracle > 正文

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

XKER.COM   2006-12-29 11:48:41  来源:赛迪网  收藏本文

作为一个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数据库性能的四个误区·在ASP中连接Oracle数据库的例子
·SQL Server 与Oracle的不同点(从微观上)·用 Oracle AS 10g 为PHP提供的一次性登录
·你的INTERNAL帐号密码忘记了怎么办·用PHP连mysql和oracle数据库性能比较
·ORACLE的日志管理·比较SQL Server2005和Oracle 10g R2
·获取本机上配置好的Oracle服务名·DB2数据库与Oracle数据库之间远程复制
·Oracle数据库的ORA-00257故障解决过程·Oracle数据的异地自动备份
·Oracle SQL性能优化系列讲座·oracle教程 Oracle实例恢复详细分析总汇
·windows优化系统后oracle9i本地连接失败·Oracle logminer使用方法总结

学院文章搜索
  
推荐文章
·最新javascript 技巧集
·PS CS3教程:教你打造图片
·巧施妙招解决Windows2003服
·X-Window环境下配置nVIDIA
·了解进程和病毒十七点相关
·七大步骤建立可靠的Linux操
·Java路径问题最终解决方案
·P2P端口映射UPnP功能和使用
·Recover My Files让删除文
·揭开BIOS中的绝对宝藏
阅读排行
·免费代理IP(每日更新)
·端口·木马·安全·扫描应
·Windows远程控制完全指南
·QQ号码激活系统常见问题及
·妙用ISEE三步将女友照片变
·解除关机后鼠标还亮的问题
·IP地址冲突问题的解决和预
·SQL优化实例:从运行30分钟
·其实很简单——防火墙设置
·轻轻松松写简历,助你马到
专题教程
·photoshop抠图教程
·PHP教程专题
·MySQL 专题
·数据恢复指南 专题
·Web服务器专题
·DB2 9数据库专题
·ghost教程 专题
·局域网技术专题
·虚拟机专题
·CDN加速技术专题
最新文章
·Oracle数据转储时字符集的
·Photoshop简单酒吧网页制作
·支付宝明年收费 淘宝用户继
·巧解无线路由器不正常工作
·应急磁盘“附加信息”文字
·关于IE7.0浏览器的快捷秘笈
·技巧:实现IIS与Apache共用
·[形色图说]绝色后期教程2:
·photoshop绘制印度小美人
·Photoshop轻松打造至酷iPo
·Photoshop CS3亲密接触(5)
·[数字暗房]古铜色效果制作
·[数字暗房]打造雪景婚纱照
·SQL Server使用链接服务器
·用索引调节向导调整应用程
设为首页 - 加入收藏 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2003 - 2006 XKER Inc. All Rights Reserved
新客网 版权所有