WEB开发网
开发学院数据库Oracle Oracle数据转储时字符集的转换规律 阅读

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

 2007-05-12 12:23:36 来源:WEB开发网   
核心提示:作为一个Oracle数据库的用户,对于Export和Import两个命令绝对不会感到陌生,Oracle数据转储时字符集的转换规律,因为这二者正是我们经常用于数据备份和恢复的工具,但在使用这两个命令过程中所发生的Oracle字符集问题,如果源数据库使用ZHS16CGB231280字符集,而Export用户会话使用ZHS1

作为一个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字符集,则转换过程能够完全转换成功。

1 2 3 4  下一页

Tags:Oracle 数据 转储

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接