Oracle817 版本 不同字符集之间的数据库导入

Oracle817 版本 不同字符集之间的数据库导入

由于业务原因,需要将一英文字符集( American_America.WE8ISO8859P1 )的数据库 DMP 文件导入到一中文字符集( SIMPLIFIED CHINESE_CHINA.ZHS16GBK )的数据库中。由于字符集的不同,需要将中文字符集的数据库环境改变成英文字符集。遇到很多的麻烦,通过在网上查找资料,终于解决了问题。在这个过程中,发现网友们也有同样的问题,为了,让大家在以后能够顺利的完成此类工作,现将把我导入成功的过程写出来,与大家共享。

一、 系统环境:

导出环境:

主机: Compaq 小型机

操作系统: Unix

数据库: oracle8.1.7{ 英文字符集( American_America.WE8ISO8859P1 ) }

导入环境:

主机:普通 Pc 机

主频: PIII750

内存: 192M

操作系统: Windows 2000 server

数据库: Oracle8.1.7 中文字符集( SIMPLIFIED CHINESE_CHINA.ZHS16GBK )

注:导出过程省略

二、导入过程

1、 将 win2000 系统中的 oracle 注册表

[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE] 中的 [NLS_LANG] 键值

“ SIMPLIFIED CHINESE_CHINA.ZHS16GBK ”改成

“ American_America.WE8ISO8859P1 ”

2、 用 system 用户的身份,在 Sql-plus 下执行以下语句:

update sys.props$ set value$='WE8ISO8859P1' where name='NLS_CHARACTERSET' ;

update sys.props$ set value$='WE8ISO8859P1' where name='NLS_NCHAR_CHARACTERSET' ;

commit;

3、 重新启动 oracle

4、 开始导入数据库

userid = 用户名 / 密码 @ 连结串

buffer = 60000

log = c:\dmp.log

file = c:\ 导入数据文件名称 .dmp

fromuser = 用户名

touser = 用户名

这里要注意,要确保导入的表空间和用户已经建立并与导出文件一至,还要确认用户是否拥有 dba 的权限,否则有可能会影响导入数据的完整。

5、 检查导入效果,在目前环境下,测试数据是否正确,是否有乱码,是否有未成功导入的表和其他触发器、过程和函数等信息。确认导入没有问题后,进入到下一步。

6、 将 win2000 下 oracle 字符集环境恢复成中文字符集。

[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE] 中的 [NLS_LANG] 键值

“ American_America.WE8ISO8859P1 ” 改回

“ SIMPLIFIED CHINESE_CHINA.ZHS16GBK ”

7、 用 system 用户的身份,在 Sql-plus 下执行以下语句:

update sys.props$ set value$=' ZHS16GBK ' where name='NLS_CHARACTERSET' ;

update sys.props$ set value$=' ZHS16GBK ' where name='NLS_NCHAR_CHARACTERSET' ;

commit;

8、 重新启动数据库。

检查你的数据库中的数据,如果没有乱码,而且你的程序能够在这个环境下正常运行,那么恭喜你,你也成功了!!

以上是我导入的整个过程,如有纰漏之处,还希望大家指点,您可以通过Email: [email protected] 和我取得联系。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus