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 = 60000log = c:\dmp.logfile = c:\导入数据文件名称.dmpfromuser = 用户名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、 重新启动数据库。 检查你的数据库中的数据,如果没有乱码,而且你的程序能够在这个环境下正常运行,那么恭喜你,你也成功了!!
。
。
要不要先建好库再imp呢?