Oracle字符集中的一些问题总结 (oracle是什么)

教程大全 2025-07-14 13:43:01 浏览

有很多的人曾问我关于Oracle字符集的一些问题,例如,在不同的数据库中做数据迁移、不同系统交换相关数据等等,经常因为Oracle字符集的不同而只是迁移失败或是数据库内数据变成乱码。

现在我将oracle字符集相关的一些知识做个简单总结,希望对大家今后的工作有所帮助。

一、什么是oracle字符集

影响oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下:

NLS_LANG = language_territory.charset

它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:

Language 指定 服务器 消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK

从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。

二、如何查询Oracle的字符集

很多人都碰到过因为字符集不同而使数据导入失败的情况。这涉及三方面的字符集,一是oracel server端的Oracle字符集,二是oracle client端的字符集;三是dmp文件的字符集。在做数据导入的时候,需要这三个字符集都一致才能正确导入。

1、查询oracle server端的字符集

Oracle字符集中的一些问题总结

有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种:SQL>select userenv(‘language’) from dual;

结果类似如下:

2、如何查询dmp文件的字符集

用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:

如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):

然后用上述SQL也可以得到它对应的Oracle字符集。

3、查询oracle client端的字符集

这个比较简单。在windows平台下,就是注册表里面相应OracleHome的NLS_LANG。还可以在dos窗口里面自己设置,比如:

这样就只影响这个窗口里面的环境变量。

在unix平台下,就是环境变量NLS_LANG。

如果检查的结果发现server端与client端字符集不一致,请统一修改为同server端相同的字符集。

三、修改oracle的字符集

上文说过,oracle的字符集有互相的包容关系。如us7ascii就是zhs16gbk的子集,从us7ascii到zhs16gbk不会有数据解释上的问题,不会有数据丢失。在所有的字符集中utf8应该是***,因为它基于unicode,双字节保存字符(也因此在存储空间上占用更多)。

一旦数据库创建后,数据库的字符集理论上讲是不能改变的。因此,在设计和安装之初考虑使用哪一种字符集十分重要。根据Oracle的官方说明,字符集的转换是从子集到超集受支持,反之不行。如果两种字符集之间根本没有子集和超集的关系,那么字符集的转换是不受oracle支持的。

对数据库server而言,错误的修改字符集将会导致很多不可测的后果,可能会严重影响数据库的正常运行,所以在修改之前一定要确认两种Oracle字符集是否存在子集和超集的关系。一般来说,除非万不得已,我们不建议修改oracle数据库server端的字符集。

特别说明,我们最常用的两种字符集ZHS16GBK和ZHS16CGB231280之间不存在子集和超集关系,因此理论上讲这两种字符集之间的相互转换不受支持。

1、修改server端字符集(不建议使用)

在oracle 8之前,可以用直接修改数据字典表props$来改变数据库的字符集。但oracle8之后,至少有三张系统表记录了数据库字符集的信息,只改props$表并不完全,可能引起严重的后果。正确的修改方法如下:

若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令:

2、修改dmp文件字符集

上文说过,dmp文件的第2第3字节记录了字符集信息,因此直接修改dmp文件的第2第3字节的内容就可以‘骗’过oracle的检查。这样做理论上也仅是从子集到超集可以修改,但很多情况下在没有子集和超集关系的情况下也可以修改,我们常用的一些Oracle字符集:

如US7ASCII,WE8ISO8859P1,ZHS16CGB231280,ZHS16GBK基本都可以改。因为改的只是dmp文件,所以影响不大。

具体的修改方法比较多,最简单的就是直接用UltraEdit修改dmp文件的第2和第3个字节。比如想将dmp文件的Oracle字符集改为ZHS16GBK,可以用以下SQL查出该种字符集对应的16进制代码:

然后将dmp文件的2、3字节修改为0354即可。

如果dmp文件很大,用ue无法打开,就需要用程序的方法了。网上有人用java存储过程写了转换的程序(用java存储过程的好处是通用性教好,缺点是比较麻烦)。我在windows下测试通过。但要求oracle数据库一定要安装JVM选项。有兴趣的朋友可以研究一下程序代码

【编辑推荐】


银河一卡通售饭系统数据库用什么打开方式能打开?

有两种方法: 1,如果你有一个单独安装的数据库,数据库导入; 软件系统还原数据导入。 赣州食堂售饭机专业服务商赣州总结油墨公司 赣州食堂售饭系统服务供应商 赣州一笔一墨官方网站登录,可以更

如何解决ORACLE 乱码问题

oracle 建表的时候可以只等表的编码!表的编码 如SQL语句插入的编码一致 即可

IT是什么职业?

IT(Information Technology,即信息技术)的基本概念和所指范围。 IT实际上有三个层次:第一层是硬件,主要指数据存储、处理和传输的主机和网络通信设备;第二层是指软件,包括可用来搜集、存储、检索、分析、应用、评估信息的各种软件,它包括我们通常所指的ERP(企业资源计划)、CRM(客户关系管理)、SCM(供应链管理)等商用管理软件,也包括用来加强流程管理的WF(工作流)管理软件、辅助分析的DW/DM(数据仓库和数据挖掘)软件等;第三层是指应用,指搜集、存储、检索、分析、应用、评估使用各种信息,包括应用ERP、CRM、SCM等软件直接辅助决策,也包括利用其它决策分析模型或借助DW/DM等技术手段来进一步提高分析的质量,辅助决策者作决策(强调一点,只是辅助而不是替代人决策)。 有些人理解的IT把前二层合二为一,统指信息的存储、处理和传输,后者则为信息的应用;也有人把后二层合二为一,则划分为前硬后软。 通常第三层还没有得到足够的重视,但事实上却是唯有当信息得到有效应用时IT的价值才能得到充分发挥,也才真正实现了信息化的目标。 信息化本身不是目标,它只是在当前时代背景下一种实现目标比较好的一种手段。 卡尔的IT是指什么呢?在那篇文章里面他并没有明确提出,不过他提到信息技术的核心功能--数据存储、处理和传输。 从他推理的逻辑来看,即从蒸汽机、铁路、电报电话、电力等基础设施建设推过来的,还用摩尔定律来佐证主机和光纤的发展。 如果他就此打住,只从这一点出发,他的逻辑论证是非常严谨的,后面对《IT不再重要》发表不管支持与反对评论的人,在这一点上都是基本认同的(除了那些硬件和网络厂商外),笔者也认同这一点。 整个文章里他对物化的IT基础设施建设部分关注很多,基本没有关注应用层面。 但后面他讲到大众化趋势时,又提到“信息技术极易复制”,则把IT又推到了商业软件,这里已经迈出了“危险”的一步。 在2004年他出版同名书时开篇就定义了他研究、类比过来的IT,“我用的‘IT’是指通常意义上的,即所有被用来以数字形式存储、处理和传输信息的硬件和软件,特别强调的是,我只是指技术本身,我指的‘IT’并不包括技术中流动的信息和那些使用技术的人才技能”,所以他所指的IT是指前二层。 如果就这此打住,可能还是不会有太大争议(这次又加上那些难受的软件厂商)。 客观地分析软件本身的特征,的确不具备核心竞争力的四个判断标准中的三个即:稀缺性、不易复制性、不易替代性,卡尔本人也没有否认而且是在强调IT具备核心竞争力的第四个判断标准,即有价值。 但他偏偏又把题目定成了“IT不再重要”,几欲把整个IT一棍子打死! 可惜他在IT这一概念上是经常含混不清:一会儿指主机网络,一会儿又跑到软件,在他后来出版的书里甚至经常“一不小心”就迈到了第三层,完全违背了他在书开头所界定的IT范围,如论述信息技术的应用、对CIO发出的诘问等。 有很多读者、包括哈佛商业评论的编辑当时就指出了这一点。 后面其它很多人也因为这一点来攻击他,甚至有人说卡尔干脆就不懂IT,有可能是真的,因为他毕竟本来就不是做IT的。 这也给我们搞研究的人也给予很大的启示和警醒,对自己不太熟悉的领域套用其它方法来研究时要特别小心,否则会闹出很多笑话。 这里笔者要强调一点,经常有软件厂商(国内外的都有)宣称上了信息化就能如何如何,就能加强企业核心竞争力(反正多是现在流行什么就跟什么,“与时俱进”)。 不知道他们是有意还是无意,且不按核心竞争力判断的四个标准来推断,试反问几个简单的问题:如果上了信息化就能如何,有多少上了信息化的企业已经亏损甚至倒闭?尤其是那些宣称有几十万家客户使用他们软件的软件企业该问问自己。 如果上了信息化就能如何,那么我们假设入库、出库、销售、库存等信息全是准确的,就能自动提高销售、降低库存吗?如果说没有上信息化之前,老板可能还可因为看不见而糊涂但幸福地过过日子,那么现在呢?只是痛苦地知道有如此多的库存在仓库里呆了如此长的时间,如此多的商品长时间占据着柜台却没有带来任何销售额更不要说利润!分析一下软件厂商们宣传“信息技术是企业的核心竞争力”的现象,结论只有两个:要么这些企业不懂什么是核心竞争力(我想应该大多数还是懂的,既希望他们懂又希望他们不懂,希望结果是懂是因为至少软件企业还能懂一些管理理念而不是埋头纯粹一技术性公司,希望结果是不懂是因为这样可以少被别人攻击没有职业道德,不知者不为过嘛),要么是另有所图。 一般企业客户与IT企业之间存在严重的信息不对称问题。 IT企业与企业客户之间的博弈,最后的结果往往会是次优选择,即所谓的“柠檬效应”。 在这点上,除了IT企业和从业人员要提高自身的职业操守外,政府或行业必须加强对信息化建设的培训教育,提高企业对信息化建设的认识,引进管理咨询公司、监理公司等来改变这一博弈结局,以达到新的平衡,促进IT业更健康的发展。 信息技术本身只是一个工具,就象一柄利剑或一枝好笔,买了它并不能一定保证你武功增进多少、字写漂亮多少,还需要你不断地去练习如何舞剑、如何写字,信息化建设也需要你不断地提升运用信息的能力,这才是真正核心也是最难的地方。 功夫全在题外!信息化(数字化)目的并不是上系统拿几个数字,它只是基础,其核心在一个“化”字,把各种资源相关的信息整合起来后进行“合理化”、“优化”的配置。 譬如用历史信息来辅助做销售预测、采购计划、生产计划、配送计划、库存计划,并按照这些计划下达指令并根据实际运行情况滚动修正计划。 美国哈林顿(Joseph Harrington)博士提出的计算机集成制造(Computer Integrated Manufacturing,CIM)包含两个基本观点:一是企业生产的各个环节包括市场分析、产品设计、加工制造、经营管理和售后服务等是一个不可分割的整体,必须紧密相连、统一考虑;二是整个运作过程实质上是一个数据的采集、传递和加工处理过程,最终产品可以看作是数据的物质表现。 如果上了信息系统却不用它来辅助决策,还是按照原来的运作方式运作,则信息系统的作用可能只是限于解放某些岗位的某些工作,如统计报表等,且同时还会增加另外一些岗位的工作。 大量经验表明,如果不用信息系统收集上来的数据,要实现用来辅助决策的准确、及时、完整的信息根本不可能,信息系统只有用它才可能逐步提高其准确性、及时性和完整性。 按照核心竞争力的评价标准,要构造核心竞争力,本质上只有整合能力才是,而且越外显的能力越容易被模仿。 冰山一角,露在外面的越少越不容易被模仿,越能构成核心竞争力。 就象哈佛商业评论编辑Hal Varian(加利福尼亚大学伯克利分校信息管理与系统系主任)指出的那样:“卡尔说IT正在商品化、不再提供竞争优势,这一点他是对的。 但知道如何有效使用IT还是一种非常稀缺的技能。 ”“提供竞争优势的不是IT本身,而是那些知道如何有效利用它的人。 ”“公司在花成千上万的钱在数据存储和获取客户交易数据上,但一大堆数据就躺在那儿、没有经过分析、没有使用,但是,在那些训练有素的分析人员手上同样的数据却能产生巨大的回报!”这是一个数据丰富的时代,但同时是一个知识贫乏的时代! 波士顿大学管理学院信息系统管理学教授托马斯·H.达文波特要把“过去的40年,更确切地描述为‘数据时代’,而不是‘信息时代’”,“将数据转化为某种更有用的东西,需要相当多的人力投入和智慧,但大多数组织仅仅从技术的角度来看待这一问题。 拥有一个数据库或数据挖掘系统,与拥有其它技术一样,是必要的,但对于高质量的信息和知识而言,则是不够的”。 所以这里我们有必要明确一下一些经常混淆的基本概念。 数据(Data)=事实的记录,如上季度甲系列产品在华东地区销售额为120万。 信息=(Information)=数据+ 意义,如上季度甲系列产品华东地区销售额比去年同期减少了25 %。 智能(Intelligence)=信息+理解(understanding)与推理(reasoning),如分析原因是华东地区销售单位不行,或甲系列产品进入了衰退期,还是公司整体营销活动落后,竞争者强力促销导致?或是其它原因。 知识(Knowledge) =解决问题的技能(skill),针对这一问题公司应对的策略是什么? 智慧(Wisdom) =知识的选择(Selection) 应对的行动方案可能有多种,但(战略)选择哪个*智慧。 行动则又会产生新的交易数据。 数据、信息、智能、知识、智慧、行动与管理活动的关系见下图,事实上它们之间存在多重循环关系。 图1 数据、信息、智能、知识、智慧、行动与管理活动之间的关系 同样的高速公路、同样的高档车,开车的人不同将会开出完全不同的水平,这时更关键的因素--开车的本事就显得至关重要了。 在初级阶段,竞争比较粗放,可能主要是看谁能修好道,买好车。 到后面,大家硬件基础设施差不多,竞争日趋白热化,这个时候人的作用就突显出来了,光有好道好车还不行,还得有舒马赫这样的顶级选手才能赢得比赛。 企业经营与赛车还不太一样,赛车有人制定规则,规定只能跑一样的道,企业之间的竞争是八仙过海各显神通,有钱的就可以买高档的服务器、小型机,没有钱的就只能买PC服务器;有钱的就可以用光纤宽带,没有钱的则只能用ADSL甚至拨号;有钱的可以花几千万去买SAP、Oracle,没有钱的则只能用用金蝶、用友,甚至只有一些基本功能的小的进销存或财务软件;有钱的可以请五大帮他们制定符合未来趋势的战略并进行培训,没有钱的则只能*企业家自己摸着石头过河……的确,这是一场不太公平的竞争。 但网络经济来了,用卡尔的话说,就是IT技术已经变得“大众化”,已变成商品。 更何况ASP模式的出现,将极大的降低了企业信息化的门槛,昂贵的服务器、网络、软件费用的门槛被一下子降低了。 好比虽然你有私家的宝马、奔驰,可以很快地到达你想要到的地方。 但我也可以坐出租车差不多也能实现同样的效果,再差点儿我有公共汽车、地铁,只要很低的成本也能基本实现我的目标。 但同样的宽带、同样一套系统软件,但使用的人一样,效果却完全不一样,君不见同样是使用SAP、Oracle或者金蝶、用友,有很成功的,也有很失败的?还是那句话,功夫在诗外!

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐