摘要:早期,河北邯郸电力公司的应用系统的后台oracle数据库基本采用us7ascii英文字符集,而后期随着中文字符集的加入,现引入oracle数据库大部分采用zhs16gbk中文字符集,导致公司应用系统之间数据交互出现问题。本文利用oracle数据库参数可临时调整的特性,将英文数据库的用户数据移植过来。实现了将oracle数据库英文字符集到中文字符集数据库移植,方便统一管理维护。
关键词:oracle、英文字符集、中文字符集
1.引言
oracle公司是世界上最大的数据库软件公司,与sybase、infomix公司一样,oracle 数据库的应用比较广泛[1]。河北邯郸电力公司后台应用系统就选用了oracle数据库,在oracle实际应用工作中,由于引入时间先后的原因,应用系统数据库早期主要采用英文字符集us7ascii,而后来又主要采用中文字符集zhs16gbk不同oracle字符集数据库的存在容易造成以下几方面的问题:需要进行0racle客户端字符集的切换;公司内部不同字符集数据库的数据在无法进行正常的数据交互和传递;目前省公司以及省公司其他下属单位安装的oracle数据库均一致为采用的是中文字符集,这样就造成邯郸供电公司与省公司无法进行数据交互。严重影响了系统的运行效率及省公司应用系统的推广工作。本人通过对公司前后不同数据库字符集的研究分析,制定了一套实现中文字符集到英文字符集转换的方法,该方法应用到公司应用系统,达到了不同应用系统之间实现资源共享的目标。
计算机不仅能处理数值,还能处理诸如文字、非凡符号等其他信息,而计算机本身能直接处理的只有数值信息,所以就要求对这些文字、符号信息进行数值编码,最初的字符集是我们都非常熟悉的ascii,它是用7个二进制位来表示128个字符,而后来随着不同国家、组织的需要,出现了许许多多的字符集,如表示西欧字符的is08859系列的字符集,表示汉字的gb2312—80、gbk等字符集[2]。
oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。oracle 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。
字符数据库字符集在创建数据库时指定,在创建后通常不能更改。在创建数据库时,可以指定为字符集(character set)或国家字符集(nationalcharacter set)。
2.1 字符集
(1) 用于存储char、varchar2、clob、long等类型数据;
(2) 用于标示诸如表名、列名以及pl/sql变量等;
(3) 用于存储sql和pl/sql程序单元等。
2.2国家字符集
(1) 用于存储nchar、nvarchar2、nclob等类型数据。
(2) 国家字符集实质上是为0racle选择的附加字符集,主要作用是为了增强oracle的字符处理能力,因为nchar数据类型可以提供对亚洲使用定长多字节编码的支持,而数据库字符集则不能。国家字符集在oracle 9i中进行了重新定义,只能在unicode编码中的afl6utf16和utf8中选择,默认值是afl6utf16。
2.3字符集的查看与修改
字符集的查看一般可以通过对以下数据字典或视图设置情况来获取,nls_database_parameters、props$、v$nls_parameters查询结果中nls_characterset表示
字符集,nls_nchar_characterset表示国家字符集。
数据库字符集在创建数据库时指定,一般数据库字符集在创建后原则上不能更改。但可以通过如下两种方法进行修改:其一,重建数据库,再导入数据库数据的方式来转换;其二,通过alter database character set语句修改字符集,但创建数据库后修改字符集是有限制的,只有新的字符集是当前字符集的超集时才能修改数据库字符集,例如,utf8是us7ascii 的超集,修改数据库字符集可使用alter database character set utf8。
oracle 时间转换3.字符集转换方案
本文以河北邯郸电力公司应用系统后台oracle数据库为实验对象,针对其新老oracle 数据库字符集不一致问题,提出一种优秀的中英文字符集的转换方案,实现us7ascii英文字符集到zhs16gbk中文字符集的转换,利用oracle数据库参数可临时调整的特性,采用修改数据库参数的方法,保证了原有的数据顺利平稳的移植到新的数据库中。图1给出了转换方案的具体流程。
(1) 导出源数据库英文字符集的用户数据。将源数据库中要移植到目的数据库的用户数据进行备份,导出用户dmp文件;
(2) 临时修改目的数据库的字符集参数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。